uva#129Krypton Factor

困难的串
Sample Input
7 3
30 3
0 0
Sample Output
ABAC ABA
7
ABAC ABCA CBAB CABA CABC ACBA CABA
28

#include<iostream>
using namespace std;
int n,l,cnt;
int s[80];
int dfs(int cur){
	int i,j,k,ok;
	if(cnt == n){
		int t = 0;
		for(i = 0;i < cur; ++i){
			if(t % 4 == 0 && t % 64 != 0)
				printf(" ");
			if(t % 64 == 0 && t)
				printf("\n");
			printf("%c",s[i] + 'A');
			++t;
		}
		printf("\n%d\n",cur);
		return 1;
	}
	else{
		for(i = 0;i < l; ++i){
			s[cur] = i;
			ok = 1;
			for(j = 1;j * 2 <= cur + 1; ++j){
				for(k = 0;k < j; ++k){
					if(s[cur - k] != s[cur - k - j])
						break;
				}
				if(k == j){
					ok = 0;
					break;
				}
			}
			if(ok){
				cnt++;
				if(dfs(cur + 1))
					return 1;
			}
		}
		return 0;
	}
}
int main(){
	//freopen("d://poj//data.txt","w",stdout);
	while(scanf("%d%d",&n,&l) && n != 0){
		cnt = 0;
		dfs(0);
	}
	return 0;
} 

核心是比较后缀是否有重复。

发布了53 篇原创文章 · 获赞 0 · 访问量 721

猜你喜欢

转载自blog.csdn.net/weixin_38894974/article/details/104532045
今日推荐