国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

棋盤問題

2019-11-08 02:44:31
字體:
供稿:網(wǎng)友

 棋盤問題

Time Limit: 1000MS Memory Limit: 65536KB

PRoblem Description

在一個給定形狀的棋盤(形狀可能是不規(guī)則的)上面擺放棋子,棋子沒有區(qū)別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請編程求解對于給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案C。

Input

輸入含有多組測試數(shù)據(jù)。 每組數(shù)據(jù)的第一行是兩個正整數(shù),n k,用一個空格隔開,表示了將在一個n*n的矩陣內(nèi)描述棋盤,以及擺放棋子的數(shù)目。 n <= 8 , k <= n 當(dāng)為-1 -1時表示輸入結(jié)束。 隨后的n行描述了棋盤的形狀:每行有n個字符,其中 # 表示棋盤區(qū)域, . 表示空白區(qū)域(數(shù)據(jù)保證不出現(xiàn)多余的空白行或者空白列)。

Output

對于每一組數(shù)據(jù),給出一行輸出,輸出擺放的方案數(shù)目C (數(shù)據(jù)保證C< 2^31)。

Example Input

2 1#..#4 4...#..#..#..#...-1 -1

Example Output

21

Hint

poj1321 有鏈接提示的題目請先去鏈接處提交程序,AC后提交到SDUTOJ中,以便查詢存檔。

Author

深度優(yōu)先搜索練習(xí)think:          感覺有些遺憾,比賽中沒有選擇這道題。剩余70分鐘,卡在了最后一題上,原來以為最后一題簡單,沒想到比賽結(jié)束了也沒做寫出來。。。。。。          唉!下次要記得,不能總想一個題,可以適度的換換,或許會遇到簡單的。          還是說說這題吧,這是一道簡單的深度優(yōu)先搜索的題目,加個模板,就能ac。代碼實現(xiàn):#include<stdio.h>#include<string.h>char map[1100][1100];int v[1100];int count, n, k;void dfs(int a, int b){     int i, j;     if(b==k)     {       count++;       return;     }     for(i=a;i<=n-1;i++)     {        for(j=0;j<=n-1;j++)        {          if(map[i][j]=='#'&&!v[j])          {             v[j] = 1;             dfs(i+1, b+1);             v[j] = 0;          }        }     }}int main(){  int i;  while(~scanf("%d %d", &n, &k))  {     if(n==-1&&k==-1)          break;     count = 0;     memset(v, 0, sizeof(v));     for(i=0;i<=n-1;i++)     {          scanf("%s", map[i]);    }     dfs(0, 0);     printf("%d/n", count);  }   return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍林郭勒市| 南郑县| 文安县| 庄河市| 遂平县| 宜春市| 县级市| 乌审旗| 铜梁县| 汝城县| 玉树县| 平原县| 泰顺县| 阿尔山市| 静海县| 阿勒泰市| 涟水县| 吉隆县| 多伦县| 巫山县| 墨玉县| 获嘉县| 宜丰县| 普格县| 理塘县| 德昌县| 隆尧县| 长海县| 凌云县| 荥阳市| 威宁| 榆中县| 白玉县| 西盟| 鄂托克前旗| 修文县| 柳林县| 日土县| 汶上县| 兰西县| 定日县|