国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 团风县| 西吉县| 宝坻区| 仁布县| 上蔡县| 湟中县| 正蓝旗| 琼中| 河西区| 曲麻莱县| 通化县| 濮阳市| 牙克石市| 工布江达县| 开封县| 临泽县| 承德市| 娱乐| 西和县| 顺义区| 临汾市| 乌兰察布市| 西充县| 综艺| 平山县| 丹东市| 若尔盖县| 颍上县| 奉节县| 嘉峪关市| 襄城县| 临漳县| 繁峙县| 上蔡县| 同江市| 怀柔区| 封开县| 莒南县| 沽源县| 桃江县| 木兰县|