#6728: WA 求解...


hauhauchen (金也安里)


#include <iostream>
#include <cmath>
#include <string>
using namespace::std;
//int set(int*);
int main() {
    int a[81],ch=0;//,b,c[9],ch=0;
    while(cin){
        for (int i=0;i<81;i++){
            cin >> a[i];
        }
        //set(c);
        //橫排檢查
        for (int x=0;x<=8;x++){
            for (int i=0;i<=8;i++){
                for (int j=8;j>i;j--){
                    if (a[i+9*x] == a[j+9*x]){
                        ch ++;
                        break;
                    }
                }
            }
        }
        //直排檢查
        for (int x=0;x<=8;x++){
            for (int i=0;i<=8;i++){
                for (int j=8;j>i;j--){
                    if (a[i*9+x] == a[j*9+x]){
                        ch ++;
                        break;
                    }
                }
            }
        }
        //各框檢查
        for (int m=0;m<3;m++){
            for (int k=0;k<3;k++){
                for (int i=0;i<3;i++){
                    for (int j=0;j<2;j++){
                        int x = (i+j*9+k*3+27*m);
                         // i 同行
                        if (i == 0){
                            if (j == 0)//左上
                                if (a[x]==a[x+10]||a[x]==a[x+11]||
                                    a[x]==a[x+19]||a[x]==a[x+20]){
                                        ch ++;
                                        break;
                                }
                            if (j == 1)//左中
                                if (a[x]==a[x+10]||a[x]==a[x+11]){
                                        ch ++;
                                        break;
                                }
                        }
                        else if (i == 1){
                            if (j == 0)//中上
                                if (a[x]==a[x+8]||a[x]==a[x+10]||
                                    a[x]==a[x+17]||a[x]==a[x+19]){
                                        ch ++;
                                        break;
                                }
                            if (j == 1)//中
                                if (a[x]==a[x+8]||a[x]==a[x+10]){
                                        ch ++;
                                        break;
                                }
                        }
                        else if (i == 2){
                            if (j == 0)//右上
                                if (a[x]==a[x+7]||a[x]==a[x+8]||
                                    a[x]==a[x+16]||a[x]==a[x+17]){
                                        ch ++;
                                        break;
                                }
                            if (j == 1)//右中
                                if (a[x]==a[x+8]||a[x]==a[x+7]){
                                        ch ++;
                                        break;
                                }
                        }
                    }
                }
            }
        }
        if (ch > 1){cout<<"no"<<endl;}
        else {cout << "yes"<<endl;}
    }
    return 0;
}

 

 WA (line:2)
答案不正確

您的答案為: no 正確答案為: yes 
 
哭哭 求救 

 

#6842: Re:WA 求解...


flyingdc (FlyingDC)


我後來想得很簡單

他說只要是對的就可以

也就是說每條橫的 每條直的 每個九宮格 只要不要重複就可以

 所以只要有三個bool就好了

bool row[10][10]; 第0~8列

bool line[10][10]; 第0~8行

bool box[10][10]; 第0~8個九宮格 (可以用i+j/3)