返回列表 發帖

202406新手1-數織Nonogram_找不到judge


數織 (Nonogram)
問題敘述
Nonogram 又稱數織,是一種圖形邏輯謎題,玩家需要根據數字提示填滿或空出格子,以形成一幅圖像。數字提示標示在行和列的外側,指示連續的塊狀格子的數量和順序。 圖一為一個正確填寫完畢的數織,第一直行為5表示該行需連續填滿五格。第二橫列為3 1,表示有三個連續填滿的格和一個單獨的填色格子。 圖二的數字提示錯誤,按照此填色方式,第二列的3 1 應為 4,第四行應為1 1,第五行應為1 3。

現在你需要設計一個程序,根據輸入的填色格子,輸出每個行列相應的數字提示。

附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊
May

  1. // nonogram
  2. #include <bits/stdc++.h>
  3. using namespace std;

  4. int main()
  5. {
  6.     int n;
  7.     cin >> n;
  8.     vector<vector<bool>> grid(n, vector<bool>(n));//bool grid[n][n]
  9.    
  10.     for (int r = 0; r < n; r++)
  11.     {
  12.         for (int c = 0; c < n; c++)
  13.         {
  14.             bool b;
  15.             cin >> b;
  16.             grid[r][c] = b;
  17.         }
  18.     }
  19.     // check columns
  20.     for (int c = 0; c < n; c++)
  21.     {
  22.         bool isEmpty = true;
  23.         int count = 0;
  24.         for (int r = 0; r < n; r++)
  25.         {
  26.             if (grid[r][c])//grid[r][c]==1
  27.             {
  28.                 count++;
  29.                 isEmpty = false;
  30.             }
  31.             else if (count > 0)//grid[r][c]==0 && count > 0
  32.             {
  33.                 cout << count << " ";
  34.                 count = 0;
  35.             }
  36.         }
  37.         //一整行刷完後,查看count的值
  38.         if (count > 0)
  39.         {
  40.             cout << count << " ";
  41.         }
  42.         else if (isEmpty)
  43.         {
  44.             cout << "0";
  45.         }
  46.         cout << endl;
  47.     }
  48.     // check rows
  49.     for (int r = 0; r < n; r++)
  50.     {
  51.         bool isEmpty = true;
  52.         int count = 0;
  53.         for (int c = 0; c < n; c++)
  54.         {
  55.             if (grid[r][c])
  56.             {
  57.                 count++;
  58.                 isEmpty = false;
  59.             }
  60.             else if (count > 0)
  61.             {
  62.                 cout << count << " ";
  63.                 count = 0;
  64.             }
  65.         }
  66.          //一整列刷完後,查看count的值
  67.         if (count > 0)
  68.         {
  69.             cout << count << " ";
  70.         }
  71.         else if (isEmpty)
  72.         {
  73.             cout << "0";
  74.         }
  75.         cout << endl;
  76.     }
  77. }
  78. /*
  79. 5
  80. 1 0 0 0 1
  81. 1 1 1 1 0
  82. 1 0 1 0 1
  83. 1 0 1 0 1
  84. 1 0 0 1 1

  85. */
複製代碼
May

TOP

返回列表