在两种情况下不能得到答案:1、n不是4的整数倍 2、某个字符的数量大于n/4
如果满足上述条件直接打印“===”,否则填充数组。
AC代码:
#include<cstdio> #include<cstring> const int maxn=255+5; char s[maxn],cnt[4]; const char ch[]={'A','C','G','T'}; int main(){ int n; while(scanf("%d",&n)!=EOF){ memset(cnt,0,sizeof(cnt)); scanf("%s",s); if(n%4!=0) { printf("===\n"); continue; } for(int i=0;i<n;++i){ if(s[i]=='A') cnt[0]++; else if(s[i]=='C') cnt[1]++; else if(s[i]=='G') cnt[2]++; else if(s[i]=='T') cnt[3]++; } int flag=1; for(int i=0;i<4;++i) if(cnt[i]>n/4) { printf("===\n"); flag=0; break; } if(!flag) continue; for(int i=0;i<n;++i){ if(s[i]!='?') continue; for(int j=0;j<4;++j){ if(cnt[j]<n/4) { ++cnt[j]; s[i]=ch[j]; break; } } } printf("%s\n",s); } return 0; }
如有不当之处欢迎指出!