1. 程式人生 > >UVA-129 困難的串

UVA-129 困難的串

每次在末尾新增前都先檢查一下是否合法

輸出格式搞得我真蛋疼

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
typedef long long ll;
#define DEBUG
const int maxn=1000+5,maxv=26,INF=0x3f3f3f3f,mod=100000000; char A[maxn]; int cnt=0; void dfs(int cur,int n,int L,char* A){ for(int i=0;i<n;i++){ int f=1; for(int j=1;j*2<=cur+1;j++){ int flag=0; A[cur]='A'+i; for(int k=0;k<j;k++){ if
(A[cur-k]!=A[cur-k-j]){flag=1;break;} } if(!flag){f=0;break;} } if(f){ // printf("----%d\n",cur ); cnt++; A[cur]='A'+i; if(cnt==L){ int c=0; for(int j=0;j<=cur;j++){ if
(j&&j%64==0)printf("\n"); if(j&&j%4==0&&j%64)c++,printf(" "); printf("%c",A[j]); } printf("\n%d\n",cur+1); } else if(cnt<L){ dfs(cur+1,n,L,A); } } } } int main(){ #ifdef DEBUG freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif int n,L; while(cin>>L>>n){ cnt=0; dfs(0,n,L,A); } #ifdef DEBUG fclose(stdin); fclose(stdout); #endif return 0; }