筆試算法題:求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

亚洲制服丝袜二区欧美精品,亚洲精品无码视频乱码,日韩av无码一区二区,国产人妖视频一区二区
在线播放免费人成视频观看 | 亚洲人成欧美中文字幕午夜 | 亚洲AV午夜福利精品喷潮 | 一本大道香蕉青青久久 | 亚洲欧美综合精品在线 | 色A在线免弗看五月丁香 |