我正在尝试解决 Google Code Jam APAC测试七段显示问题。 的 https://code.google.com/codejam/contest/3214486/dashboard 我已经使用包含二进制数98765432109876的字符串和给定字符串N之间的最小汉明距离来实现该解决方案。 当结果打印 ERROR!时,我无法理解案例。 这是我的解决方案 -
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
char str[]="111101111111111110000101111110110110110011111100111011010110000111111011110111111111111000010111111011011";
int l=strlen(str);
for(int k=1;k<=t;k++)
{
int n;
cin>>n;
l=10*7+(n-1)*7;
char num[50];
for(int i=0;i<7*n;i++)
{
char ch;
cin>>ch;
if(ch!=' ')
num[i]=ch;
}
int ok[7]={0};
for(int i=0;i<7*n;i++)
{
ok[i%7]=ok[i%7]|(num[i]-'0');
}
int mn_dst=10000,dt=0,f=0,pos=0;
int xor_res[9]={0},txor_res[9]={0},z=0;
for(int i=0;i<=(l-(7*n));i=i+7)
{
dt=0;
z=0;
memset(txor_res,0,sizeof(int)*9);
for(int j=0;j<7*n;j++){
if((str[j+i]=='1'&&num[j]=='0'&&ok[j%7]==1)||(str[j+i]=='0'&&num[j]=='1'))
{z=1;
break;
}
if(str[j+i]!=num[j])
{dt++;
txor_res[j%7]=1;
}
}
if(z==1)
continue;
if(dt==mn_dst)
{f=1;
break;
}
if(mn_dst!=10000)
{f=1;
break;
}
if(dt<mn_dst)
{
mn_dst=dt;
dt=0;
pos=i;
for(int h=0;h<=7;h++)
{
xor_res[h]=txor_res[h];
txor_res[h]=0;
}
}
}
if(f==1||mn_dst==10000)
cout<<"Case #"<<k<<": "<<"ERROR!\n";
else
{
cout<<"Case #"<<k<<": ";
pos=pos+7*n;
for(int i=pos;i<(pos+7);i++)
{
cout<<str[i];
}
cout<<"\n";
}
}
}
我不想通过理解我的代码来打扰任何人。相反,我想要一种新方法。
答案 0 :(得分:0)
我在理解你的问题时遇到了同样的问题。我下载了A-small-practice.in。我运行了一个正确的解决方案,我们在以下情况下生成不同的输出 -
输入
1 0001011
我的输出 -
Case #18: 0100011
正确输出 -
Case #18: ERROR!
输入
1 0011111
我的输出 -
Case #27: 0011011
正确输出 -
Case #27: ERROR!
输入
1 1001111
我的输出 -
Case #66: 1001011
正确输出 -
Case #66: ERROR!
输入
1 1111110
我的输出 -
Case #73: 1111011
正确输出 -
Case #73: ERROR!
输入
1 1011101
我的输出 -
Case #74: 1011001
正确输出 -
Case #74: ERROR!
<案例6
输入
2 1001001 1001101
我的输出 -
Case #77: 0000000
正确输出 -
Case #77: ERROR!
<案例7
输入
1 0111011
我的输出 -
Case #81: 0111111
正确输出 -
Case #81: ERROR!
输入
1 1011011
我的输出 -
Case #94: 0110011
正确输出 -
Case #94: ERROR!
我的输出不匹配的所有情况,这是因为正确的输出是&#34; ERROR!&#34;,而我能够找到明确的下一状态。您或其他人可以指出为什么我的解决方案不是唯一明确的状态吗? :)任何其他指针也将受到赞赏。
让我们一起一个案例找出这个问题的确切含义:D