数据??

大家可以试一下
这个代码,第五个错
c++
#include<iostream>
using namespace std;
int E[20][10][10];
bool U[10][10];
bool IsWrong[21];
bool Vis[10];
bool IsRightRow(int k){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++)Vis[i]=true;
for(int j=0;j<9;j++){
if(Vis[E[k][i][j]-1]==true)Vis[E[k][i][j]-1]=false;
}
}
for(int i=0;i<9;i++){
if(Vis[i]==false);
else return false;
}
return true;
}
bool IsRightColumn(int k){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++)Vis[i]=true;
for(int j=0;j<9;j++){
if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
}
}
for(int i=0;i<9;i++){
if(Vis[i]==false);
else return false;
}
return true;
return true;
}
bool IsRightArea(int k){
for(int i=0;i<9;i+=3){
for(int j=0;j<9;j++)Vis[j]=true;
for(int j=0;j<3;j++){
if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
}
for(int j=0;j<9;j++)if(Vis[j]==true)return false;
}
for(int i=0;i<9;i+=3){
for(int j=0;j<9;j++)Vis[j]=true;
for(int j=3;j<6;j++){
if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
}
for(int j=0;j<9;j++)if(Vis[j]==true)return false;
}
for(int i=0;i<9;i+=3){
for(int j=0;j<9;j++)Vis[j]=true;
for(int j=6;j<9;j++){
if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
}
for(int j=0;j<9;j++)if(Vis[j]==true)return false;
}
return true;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<9;j++){
for(int k=0;k<9;k++){
cin>>E[i][j][k];
}
}
IsWrong[i]=true;
}
for(int i=0;i<n;i++){
if(IsRightRow(i)!=true)IsWrong[i]=false;
if(IsRightColumn(i)!=true)IsWrong[i]=false;
if(IsRightArea(i)!=true)IsWrong[i]=false;
}
for(int i=0;i<n;i++){
if(IsWrong[i]!=false){
cout<<"Right"<<endl;
}
else cout<<"Wrong"<<endl;
}
}

这个代码,还是第五个错:

#include<iostream>
using namespace std;
int E[20][10][10];
bool U[10][10];
bool IsWrong[21];
bool Vis[10];
bool IsRightRow(int k){
    for(int i=0;i<9;i++){
        for(int j=0;j<9;j++)Vis[i]=true;
        for(int j=0;j<9;j++){
            if(Vis[E[k][i][j]-1]==true)Vis[E[k][i][j]-1]=false;
        }   
    }
    for(int i=0;i<9;i++){
            if(Vis[i]==false);
            else return false;
        }
    return true;
}
bool IsRightColumn(int k){
    for(int i=0;i<9;i++){
        for(int j=0;j<9;j++)Vis[i]=true;
        for(int j=0;j<9;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
        }   
    }
    for(int i=0;i<9;i++){
            if(Vis[i]==false);
            else return false;
        }
    return true;
    return true;
}
bool IsRightArea(int k){
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=0;j<3;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=3;j<6;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=6;j<9;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<9;j++){
            for(int k=0;k<9;k++){
                cin>>E[i][j][k];
            }
        }
        IsWrong[i]=true;
    }
    for(int i=0;i<n;i++){
        if(IsRightRow(i)!=true)IsWrong[i]=false;
        if(IsRightArea(i)!=true)IsWrong[i]=false;
    }
    for(int i=0;i<n;i++){
        if(IsWrong[i]!=false){
            cout<<"Right"<<endl;
        }
        else cout<<"Wrong"<<endl;
    }
}

甚至把行列验证都去掉,还是第五个错:

#include<iostream>
using namespace std;
int E[20][10][10];
bool U[10][10];
bool IsWrong[21];
bool Vis[10];
bool IsRightRow(int k){
    for(int i=0;i<9;i++){
        for(int j=0;j<9;j++)Vis[i]=true;
        for(int j=0;j<9;j++){
            if(Vis[E[k][i][j]-1]==true)Vis[E[k][i][j]-1]=false;
        }   
    }
    for(int i=0;i<9;i++){
            if(Vis[i]==false);
            else return false;
        }
    return true;
}
bool IsRightColumn(int k){
    for(int i=0;i<9;i++){
        for(int j=0;j<9;j++)Vis[i]=true;
        for(int j=0;j<9;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
        }   
    }
    for(int i=0;i<9;i++){
            if(Vis[i]==false);
            else return false;
        }
    return true;
    return true;
}
bool IsRightArea(int k){
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=0;j<3;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=3;j<6;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    for(int i=0;i<9;i+=3){
        for(int j=0;j<9;j++)Vis[j]=true;
        for(int j=6;j<9;j++){
            if(Vis[E[k][j][i]-1]==true)Vis[E[k][j][i]-1]=false;
            if(Vis[E[k][j][i+1]-1]==true)Vis[E[k][j][i+1]-1]=false;
            if(Vis[E[k][j][i+2]-1]==true)Vis[E[k][j][i+2]-1]=false;
        }
        for(int j=0;j<9;j++)if(Vis[j]==true)return false;
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<9;j++){
            for(int k=0;k<9;k++){
                cin>>E[i][j][k];
            }
        }
        IsWrong[i]=true;
    }
    for(int i=0;i<n;i++){
        if(IsRightArea(i)!=true)IsWrong[i]=false;
    }
    for(int i=0;i<n;i++){
        if(IsWrong[i]!=false){
            cout<<"Right"<<endl;
        }
        else cout<<"Wrong"<<endl;
    }
}

0 条评论

目前还没有评论...

信息

ID
1335
难度
4
分类
模拟 点击显示
标签
递交数
5142
已通过
1987
通过率
39%
被复制
20
上传者