解题思路:1.每一竖排上,如果有奇数个1,则为奇校验,否则为偶校验. 2.每一竖排最多可以损坏一个数据。 3.题目中“校验错”的含义:例如,若为E(偶校验),则每一竖排的1都必须是偶数个。是每一排啊 #include #include #include #include #include using namespace std; int n,k,m,maxnn=1; char buf[10]; string a[20],b[20]; map p; void mapp(){ p["0000"]="0"; p["0001"]="1";p["0010"]="2";p["0011"]="3"; p["0100"]="4";p["0101"]="5";p["0110"]="6"; p["0111"]="7";p["1000"]="8";p["1001"]="9"; p["1010"]="A";p["1011"]="B";p["1100"]="C"; p["1101"]="D";p["1110"]="E";p["1111"]="F"; } bool solve(){ for(int i=0;i =2) return false; else if(kase==0&&buf[0]=='E'&&ans%2==1) return false; else if(kase==0&&buf[0]=='O'&&ans%2==0) return false; else if(kase==1&&buf[0]=='E'&&ans%2==0) a[bbs][i]='0'; else if(kase==1&&buf[0]=='E'&&ans%2==1) a[bbs][i]='1'; else if(kase==1&&buf[0]=='O'&&ans%2==0) a[bbs][i]='1'; else if(kase==1&&buf[0]=='O'&&ans%2==1) a[bbs][i]='0'; } return true; } void print(){ cout<<"Disk set "< <<" is valid, contents are: "; int kase=0;string s; for(int i=0;i >n&&n){ cin>>k>>m; cin>>buf; for(int i=0;i >a[i]; string s1,s2; int kase=0; for(int i=0;i