• <nav id="cwumo"><code id="cwumo"></code></nav>
  • <menu id="cwumo"><strong id="cwumo"></strong></menu>

    筆試算法題:求6*7網格中的黑點分布

    時間:2023-04-05 02:31:46 筆試題目 我要投稿
    • 相關推薦

    筆試算法題:求6*7網格中的黑點分布

      求網格中的黑點分布。現有6*7的網格,在某些格子中有黑點,已知各行與各列中有黑點的點數之和,請在這張網格中畫出黑點的位置。(這是一網友提出的題目,說是他筆試時遇到算法題)

    筆試算法題:求6*7網格中的黑點分布

      #define ROWS 6

      #define COLS 7

      int iPointsR[ROWS] = {2, 0, 4, 3, 4, 0}; // 各行黑點數和的情況

      int iPointsC[COLS] = {4, 1, 2, 2, 1, 2, 1}; // 各列黑點數和的情況

      int iCount, iFound;

      int iSumR[ROWS], iSumC[COLS], Grid[ROWS][COLS];

      int Set(int iRowNo) {

      if(iRowNo == ROWS) {

      for(int iColNo=0; iColNo < COLS && iSumC[iColNo]==iPointsC[iColNo]; iColNo++)

      if(iColNo == COLS-1) {

      printf(“\nNo.%d:\n”, ++iCount);

      for(int i=0; i < ROWS; i++)

      for(int j=0; j < COLS; j++)

      printf(“%d%c”, Grid[i][j], (j+1) % COLS ? ‘ ‘ : ‘\n’);

      iFound = 1; // iFound = 1,有解

      }

      } else {

      for(int iColNo=0; iColNo < COLS; iColNo++) {

      if(iPointsR[iRowNo] == 0) {

      Set(iRowNo + 1);

      } else if(Grid[iRowNo][iColNo]==0) {

      Grid[iRowNo][iColNo] = 1;

      iSumR[iRowNo]++; iSumC[iColNo]++; if(iSumR[iRowNo] Set(iRowNo);

      else if(iSumR[iRowNo]==iPointsR[iRowNo] && iRowNo < ROWS)

      Set(iRowNo + 1);

      Grid[iRowNo][iColNo] = 0;

      iSumR[iRowNo]–;

      iSumC[iColNo]–;

      }

      }

      }

      return iFound; // 用于判斷是否有解

      }

      int main(int argc, char* argv[]) {

      if(!Set(0))

      printf(“Failure!”);

      }

    【筆試算法題:求6*7網格中的黑點分布】相關文章:

    迅雷2道算法類筆試真題11-21

    基于遺傳算法的OD分布03-21

    求筆試經驗11-19

    求DTT的筆試內容11-21

    求銀行的筆試形式11-21

    創新工場2014筆試算法題匯總附答案11-16

    筆試面試成績怎么算法11-12

    基于粒子群算法的分布式論文10-27

    名企筆試中不同的主觀題07-16

    搜狐筆試真題編程筆試真題07-23

    日韩激情