pku 1321 棋盘问题
来源:互联网 发布:汽车保值率算法 编辑:程序博客网 时间:2024/05/16 14:38
Description
Input
每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
当为-1 -1时表示输入结束。
随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
Output
Sample Input
2 1#..#4 4...#..#..#..#...-1 -1
Sample Output
21
Source
算法:搜索;从没一行第一个开始,如果可以则标记该列falg[];
源代码:
#include<stdio.h>
#include<string.h>
#define MAX 10
char chessMap[MAX][MAX];
int flag[MAX],count,n,m;
void DFS(int row,int num)
{
if(num==m)
{
count++;
return;
}/*达到m个棋子,结束*/
if(row>n)
{
return;
} /*超出范围,结束*/
for(int k=1;k<=n;k++)
{
if(!flag[k]&&chessMap[row][k]=='#')
{
flag[k]=1;
DFS(row+1,num+1);
flag[k]=0;
}
} /*k为column(列)*/
DFS(row+1,num); /*若一行都没有'#'时,执行此步*/
}
int main()
{
while(scanf("%d%d%*c",&n,&m)!=EOF&&n!=-1||m!=-1)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%c",&chessMap[i][j]);
}
getchar();/*此处贡献了一次wrong,同样的错误又犯,有点郁闷*/
}
memset(flag,0,sizeof(flag));
count=0;
DFS(1,0);
printf("%d/n",count);
}
return 0;
}
- pku 1321 棋盘问题
- pku 1321 棋盘问题
- pku 1321 棋盘覆盖问题
- acm pku 1321解题报告 棋盘问题
- pku 1321 深搜 棋盘问题 解题报告
- pku 1321 棋盘问题 简单DFS
- POJ 1321 棋盘问题
- poj 1321 棋盘问题
- poj 1321 棋盘问题
- Poj 1321 棋盘问题
- POJ 1321 棋盘问题
- OPENJUDGE 1321 棋盘问题
- POJ 1321 棋盘问题
- POJ-1321-棋盘问题
- poj 1321棋盘问题
- POJ 1321 棋盘问题
- poj 1321 棋盘问题
- POJ 1321 棋盘问题
- 问题集锦(30-35)
- 存储引擎揭秘:基本结构之五——GAM、SGAM、PFS和其他分配映射页
- 转载几篇关于java读写及验证xml的文章(一、How to create XML file in Java )
- 一个简单数学小游戏C语言代码
- uboot中C语言代码入口函数(start_armboot)的注释
- pku 1321 棋盘问题
- [不看后悔啊!]史上最为全面的Autocad施工图视频教程 看完就能成为装修设计师 http://www.51zxw.net/study.asp?vip=1573837
- 老子不想耍流氓了,老子要跟你结婚
- 我是一条小河
- Sql Server添加一条记录后获取自增的ID
- Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯
- open/read/write和fopen/fread/fwrite的区别
- 禁用浏览器的后退按钮
- DELL重装记