#13591: 數獨概念,用 C++


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a016. 數獨(SUDOKU) | From: [1.173.96.138] | 發表日期 : 2018-03-25 00:31

C++ 可以用 set 去解,將不能出現重複數字的區塊,設為一個 set,如此會有橫向、縱向、九宮格各 9 個 set。

將讀入的數字放進對應的 set 中,最後只要確認每個 set 是不是都剛好有 9 個數字即可。

部份提示:

// 宣告
set<int> set_row[9], set_col[9], set_block[3][3];
// 將數字放進去
void push_in_set(int i, int j, int num) {
set_row[i].insert(num);
set_col[j].insert(num);
set_block[i / 3][j / 3].insert(num);
}
 
#16494: Re:數獨概念,用 C++


danielxlee.dl@gmail.com (lwx)

學校 : 國立內壢高級中學
編號 : 80093
來源 : [111.240.17.48]
最後登入時間 :
2019-10-16 23:01:54
a016. 數獨(SUDOKU) | From: [219.68.207.42] | 發表日期 : 2019-01-06 22:24

C++ 可以用 set 去解,將不能出現重複數字的區塊,設為一個 set,如此會有橫向、縱向、九宮格各 9 個 set。

將讀入的數字放進對應的 set 中,最後只要確認每個 set 是不是都剛好有 9 個數字即可。

部份提示:

// 宣告
set set_row[9], set_col[9], set_block[3][3];
// 將數字放進去
void push_in_set(int i, int j, int num) {
set_row[i].insert(num);
set_col[j].insert(num);
set_block[i / 3][j / 3].insert(num);
}

我是這樣寫的 哪裡有錯,能幫我看一下嗎

#include <iostream>
#include <set>
using namespace std;
int main()
{
    int num[9][9],T=2;
    set<int> set_row[9], set_col[9], set_block[3][3];
    do{

        for(int i=0;i<9;i++)
            for(int j=0;j<9;j++)
            {
                cin >> num[i][j];
                set_row[i].insert(num[i][j]);
                set_col[j].insert(num[i][j]);
                set_block[i/3][j/3].insert(num[i][j]);
            }
            bool result=1;
            for(int i=0;i<9;i++)
                for(int j=0;j<9;j++)
                {
                    if(set_row[i].size()!=9 ||
                       set_col[j].size()!=9 ||
                       set_block[i/3][j/3].size()!=9)
                    {
                        result =0;
                        break;
                    }
                }

            if(result)
                cout << "yes" <<endl;
            else
                cout << "no" <<endl;

    }
    while(cin.get()=='\n');
    return 0;
}



 
ZeroJudge Forum