【例题 7-5 UVA - 129】Krypton Factor

【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

每次枚举增加一个字符; 然后看看新生成的字符的后缀里面有没有出现连续子串就好,前面已经确认过的没必要重复确认 (枚举长度为偶数的一个后缀就好) 是输出完第64组且保证有第65组才要输出一个换行.

【代码】

import java.io.*;
import java.util.*;
public class Main{
    static int n,l,cnt;
    static int a[] = new int[1000];
    static ArrayList<Integer> list = new ArrayList<Integer>();

    static int dfs(int now){
        if (now > 1){
            cnt++;
            if (cnt==n){
                for (int i = 1;i < now;i++) list.add(a[i]);
                return 0;
            }
        }
        for (int i = 1;i <= l;i++){
            a[now] = i;
            boolean ok = true;
            for (int j = 1; now-2*j+1>=1;j++){
                boolean ju = true;
                for (int k = now-j+1;k<=now;k++){
                    if (a[k]!=a[k-j]){
                        ju = false;
                        break;
                    }
                }
                if (ju==true){
                    ok = false;
                    break;
                }
            }
            if (!ok) continue;
            if (dfs(now+1)==0) return 0;
        }
        return 1;
    }

    public static void main(String args[]){
        Scanner cin = new Scanner(System.in);
        while (cin.hasNext()){
            n = cin.nextInt();l = cin.nextInt();
            if (n==0 && l==0) break;
            cnt = 0;
            list.clear();
            dfs(1);
            int tot = list.size();
            for (int i = 0;i < tot;i++){
                if (i%4==0 && i >0) {
                    if (i % 64 == 0) {
                        System.out.println("");
                    } else {
                        System.out.print(' ');
                    }
                }
                System.out.print((char)(list.get(i)+'A'-1));
            }
            System.out.println("");
            System.out.println(tot);
        }
    }
}
posted @   AWCXV  阅读(139)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
点击右上角即可分享
微信分享提示