zoukankan      html  css  js  c++  java
  • 129

    /*UVa129 - Krypton Factor
    --回溯问题。看例子可知道确定该字符串是按照从左到右依次考虑每个位置,当前位置填不上所有的字符时,需要回溯。
    --
    */
    #define _CRT_SECURE_NO_DEPRECATE
    #include<iostream>
    #include<fstream>
    #include<time.h>
    #include<vector>
    using namespace std;
    const int maxn = 1000;
    
    char ans[maxn];
    int k, L, tol;
    bool flag;
    
    bool isleg(int curr){
    	bool res = 1;
    	int i, b;
    	for (b = 0; b < curr; b++){
    		int len = curr - b + 1;
    		if (len & 1)continue;
    		for (i = 0; i < len / 2; i++){
    			if (ans[b+i] != ans[i + b + len / 2])break;
    		}
    		if (i == len / 2)res = 0;
    		if (!res)break;
    	}
    	return res;
    }
    void dfs(int curr){
    	if (tol==k){  //搜索到了解
    		for (int i = 0; i < curr; i++){
    			if (i&&i % 4 == 0){
    				if (i%64== 0)printf("
    ");
    				else printf(" ");
    			}
    			printf("%c", ans[i]);
    		}
    		printf("
    %d
    ",curr);
    		flag = 1;
    		return;
    	}
    	if (flag)return;
    	for (char i = 'A'; i < 'A' + L; i++){
    		ans[curr] = i;
    		if (isleg(curr)){
    			tol++;    //合法解,tol++
    			dfs(curr + 1);
    		}
    	}
    }
    int main(){
    	while (scanf("%d%d", &k, &L) && k&&L){
    		flag = 0;
    		tol = 0;
    		dfs(0);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    codevs2574 波兰表达式
    绿书模拟day10 单词前缀
    codevs2171 棋盘覆盖
    noip2008 双栈排序
    图论总结复习
    noip2010 关押罪犯
    flask使用geventwebsocket完成小型聊天系统
    MongoDB
    flask基础内容总览
    flask蓝图,cbv,python中的redis操作
  • 原文地址:https://www.cnblogs.com/td15980891505/p/5821962.html
Copyright © 2011-2022 走看看