第三屆藍橋杯7放旗子填空題

2021-07-10 01:54:17 字數 1870 閱讀 4693

今有 6 x 6 的棋盤格。其中某些格仔已經預先放好了棋子。現在要再放上去一些,使得:每行每列都正好有3顆棋子。我們希望推算出所有可能的放法。下面的**就實現了這個功能。

初始陣列中,「1」表示放有棋子,「0」表示空白。    

int n = 0;

bool checkstonenum(int x[6])

if(_________________) return false;  // 填空

}return true;

}int getrowstonenum(int x[6], int r)

int getcolstonenum(int x[6], int c)

void show(int x[6])

printf("\n");

}void f(int x[6], int r, int c);

void gonext(int x[6],  int r,  int c)

void f(int x[6], int r, int c)

return;

}if(___________________)  // 已經放有了棋子

int rr = getrowstonenum(x,r);

int cc = getcolstonenum(x,c);

if(cc>=3)  // 本列已滿

gonext(x,r,c);  

else if(rr>=3)  // 本行已滿

f(x, r+1, 0);   

else

}int main(int argc, char* argv),,

,,,};

f(x, 0, 0);

printf("%d\n", n);

return 0;

}請分析**邏輯,並推測劃線處的**。

答案寫在 「解答.txt」 檔案中

注意:只寫劃線處應該填的內容,劃線前後的內容不要抄寫。

if(numrow!=3||numcol!=3) return false; // 填空

} return true;

}int getrowstonenum(int x[6], int r)

int getcolstonenum(int x[6], int c)

void show(int x[6])

printf("\n");

}void f(int x[6], int r, int c);

void gonext(int x[6], int r, int c)

void f(int x[6], int r, int c)

return;

} if(x[r][c]==1) // 已經放有了棋子

int rr = getrowstonenum(x,r);

int cc = getcolstonenum(x,c);

if(cc>=3) // 本列已滿

gonext(x,r,c);

else if(rr>=3) // 本行已滿

f(x, r+1, 0);

else }

int main(int argc, char* argv)

, ,

, ,

, }; f(x, 0, 0);

printf("%d\n", n);

return 0;

}

第三屆藍橋杯初賽6大數乘法填空題

對於32位字長的機器,大約超過20億,用int型別就無法表示了,我們可以選擇int64型別,但無論怎樣擴充套件,固定的整數型別總是有表達的極限!如果對超級大整數進行精確運算呢?乙個簡單的辦法是 僅僅使用現有型別,但是把大整數的運算化解為若干小整數的運算,即所謂 分塊法 如圖 1.jpg 表示了分塊乘...

第三屆藍橋杯複試

第四題 奇怪的比賽 某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不...

藍橋杯第三屆題目

某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能...