1. 程式人生 > >7-5 困難的串

7-5 困難的串

%d style can 直接 utc 困難 namespace 退出 scanf

回溯法

註意return的用法 找到結果了就直接退出dfs

還有就是數組下標的處理要註意

#include<bits/stdc++.h>
using namespace std;

int n,l;
int cnt;
int ans[1000];
int dfs(int cur)
{
    if(cnt++==n)
    {
        for(int i=0;i<cur;i++)
        {
            if(i%4==0&&i>0)
            {
                if(i%64==0)
                     cout
<<endl; else printf(" "); } putchar(A+ans[i]); } printf("\n%d\n",cur); return 0; } for(int i=0;i<l;i++) { ans[cur]=i; int ok=1; for(int j=1;j*2<=cur+1;j++) {
int equa=1; for(int k=0;k<j;k++) { if(ans[ cur-k ]!=ans[ cur-j-k ] ){ equa=0;break; } } if(equa){ok=0;break;} } if(ok) if(!dfs(cur+1))return 0;//用return 0來結束回溯 } return 1; } int main() { while(scanf("
%d%d",&n,&l)==2&&n&&l) { cnt=0; dfs(0); } }

7-5 困難的串