昨天我正在解决Spoj问题ABCD:http://www.spoj.com/problems/ABCD/
我收到了错误的答案,但我真的无法弄清楚原因。我已经在论坛和评论中尝试了所有测试用例。是否接受任何有效的解决方案,或者只接受他们在其文件中的解决方案。
LOGIC:
我的代码是:
#include<stdio.h>
int i;
int main()
{
int n;
int counts[4] = {0};
char row1[1000000], row2[1000000];
scanf("%d", &n);
scanf("%s", row1);
while(row1[i])
{
counts[row1[i] - 'A']++;
i++;
}
i = 0;
if(counts[0] < n && row1[i] != 'A')
{
row2[i] = 'A';
counts[0]++;
}
else if(counts[1] < n && row1[i] != 'B')
{
row2[i] = 'B';
counts[1]++;
}
else if(counts[2] < n && row1[i] != 'C')
{
row2[i] = 'C';
counts[2]++;
}
else
{
row2[i] = 'D';
counts[3]++;
}
i++;
while(i < (2 * n))
{
if(counts[0] < n && row1[i] != 'A' && row2[i - 1] != 'A')
{
row2[i] = 'A';
counts[0]++;
}
else if(counts[1] < n && row1[i] != 'B' && row2[i - 1] != 'B')
{
row2[i] = 'B';
counts[1]++;
}
else if(counts[2] < n && row1[i] != 'C' && row2[i - 1] != 'C')
{
row2[i] = 'C';
counts[2]++;
}
else
{
row2[i] = 'D';
counts[3]++;
}
i++;
}
row2[i] = '\0';
printf("%s", row2);
return 0;
}
我已经调试了几个小时而不知道要调试什么。 甚至SPOJ论坛都没有找到我的解决方案。
答案 0 :(得分:0)
嘿,我做了几乎相同的事情,也得到了WA:P这就是这个逻辑的问题。
试试这个测试用例 3 ABACAD
输出可以是: BCDBDC