首页 > 学院 > 开发设计 > 正文

UVA 129 困难的串Krypton Factor (回溯法)

2019-11-10 22:05:17
字体:
来源:转载
供稿:网友
#include<cstdio>const int maxn=80+2;int S[maxn];int n,L,count;void PRint(int cur){	int flag=1;	for(int i=0;i<cur;i++){		if(i%4==0 && i>0)		{			if(i%64==0 && i>0)printf("/n");			else printf(" ");		}		printf("%c",S[i]+'A'); 	}	printf("/n%d/n",cur);}int dfs(int cur){	if(count++==n){    print(cur);  //打印目标字符串 	return 0; //返回值为0,则表示找到目标串 	}	for(int i=0;i<L;i++){  //尝试前L个字母 		S[cur]=i;		int ok=1;		for(int len=1;len<=(cur+1)/2;len++){			int equal=1;			for(int j=0;j<len;j++){				if(S[cur-j]!=S[cur-j-len]){	equal=0;break;}   //检查前一半是否等于后一半 			}			if(equal){ok=0;	break;}		} 		if(ok){if(!dfs(cur+1))return 0;} //递归搜索,如果已经找到解,则直接退出 	}	return 1;}int main(){	while(scanf("%d%d",&n,&L)==2){		if(n==0 && L==0)break;		count=0; //表示第n个困难的串 		dfs(0);	}	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表