题目描述:给了n个单词和m,还有一堆YES和NO表示在序列1-m,2-(m+1),3-(m+2)......中是否存在重复的单词,没重复的是YES,有重复的是NO
题目链接:点我
如果是NO的话,就使最后一个单词和第一个单词相同,如果是YES的话就按照顺序添加
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 const int INF=0x3f3f3f3f; const double eps=1e-5; typedef long long ll; #define cl(a) memset(a,0,sizeof(a)) #define ts printf(" ***** "); #define sc(a) scanf("%d",&a); #define pt(a) printf("%d ",a); #define ptn printf(" "); const int MAXN=100; int n,m,tt; char s[MAXN][20],ss[MAXN]; int main() { int i,j,k,ca=1; while(scanf("%d%d",&n,&m)!=EOF){ char sbegin[10]="Aa"; strcpy(s[0],"Aa"); char p1='A'; char p2='a'; for(i=1;i<m-1;i++){ p2++; if(p2==('z'+1)) p2='a',p1++; s[i][0]=p1; s[i][1]=p2; } for(i=-1;i<n-m;i++){ scanf("%s",ss); if(strcmp(ss,"YES")==0){ p2++; if(p2=='z'+1) p2='a',p1++; s[i+m][0]=p1; s[i+m][1]=p2; } else if(strcmp(ss,"NO")==0){ strcpy(s[i+m],sbegin); } strcpy(sbegin,s[i+2]); } for(i=0;i<n;i++){ printf("%s ",s[i]); } ptn } }