A-棋盘问题(dfs)
棋盘问题
简单的 dfs 搜索
超时代码
dfs 中套入了两层循环
#include<iostream>
#include<cstring>
using namespace std;
char mp[9][9];
int vis[9];
int ans = 0;
int n;void dfs(int s, int k){if(k == 0){ans++; return ; }for(int i = s; i < n; i++){// 两层循环超时for(int j = 0; j < n; j++){if(mp[i][j] == '.' || vis[j] == 1) continue;vis[j] = 1;dfs(s+1, k-1);vis[j] = 0;}}
}int main(){int k;while(scanf("%d%d", &n, &k) == 2){if((n == -1) && (k == -1)) break;for(int i = 0; i < n; i++){scanf("%s", &mp[i]);}ans = 0;memset(vis, 0, sizeof(vis));dfs(0, k);cout << ans << endl;}return 0;
}
AC代码
#include<iostream>
#include<cstring>
using namespace std;int n, k, cnt = 0, ans = 0;
char mp[9][9];
int vis[10];void dfs(int row){if(cnt == k) {ans++; return ;}if(row >= n) return ;for(int i = 0; i < n; i++){if(mp[row][i] == '#' && vis[i] == 0){vis[i] = 1;cnt ++;dfs(row + 1);cnt --;vis[i] = 0;}}dfs(row + 1); // 一行查完每找到,去下一行找
}int main(){while(scanf("%d%d", &n, &k) == 2){if(n == -1 && k == -1) break;for(int i = 0; i < n; i++){cin >> mp[i];}cnt = 0;ans = 0;memset(vis, 0, sizeof(int));dfs(0);cout << ans << endl;}return 0;
}
A-棋盘问题(dfs)相关推荐
- 2015 百度之星 1003 棋盘占领 dfs
棋盘占领 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_show ...
- 深度优先搜索和广度优先搜索及典例分析(走迷宫问题(BFS)和棋盘问题(DFS))
搜索算法在实际编程应用中起着举足轻重的作用,学会掌握搜索算法并熟练应用搜索算法来解决实际问题不得不说是一件相当COOL的事,所以我将深度搜索和广度搜索认真地做了详细的总结,与诸君共勉,也方便以后查阅复 ...
- pku 1321 棋盘问题 DFS
http://poj.org/problem?id=1321 自己真是本了开始写了歌对于棋子有顺序的搜索,导致求出来是ans的阶乘种数了,因为k < n且不能在同一行同一列,只要按行搜索,记录列 ...
- C语言棋盘中的正方形,C语言DFS(4)____棋盘问题
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- NOIP2017普及组:棋盘
棋盘(DFS) 题目描述: 有一个m * m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无 ...
- [AcWing算法刷题]之DFS+BFS迷宫模板(简单)
题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...
- 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)
前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...
- ACM题集以及各种总结大全(转)
ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...
- 8-18-Exercise
8-18-小练 A.HDU 1172 猜数字 采用枚举~[赤果果的暴力~] 代码: 1 #include <iostream> 2 #include <cstdio> 3 ...
- 八皇后(洛谷-P1219)
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
最新文章
- C++ 的复制构造函数
- 怎么自学python编程-怎么自学python?
- 1012: [JSOI2008]最大数maxnumber
- 设计模式中的观察者模式
- Codeforces Round #723 (Div. 2) D. Kill Anton 线段树 + 暴力
- maven 打包指定依赖包_Maven打包成Jar文件时依赖包的问题
- java timer 序列化_Java中的定时器Timer使用示例代码
- 5.WEB版QQ多人聊天,带离线留言功能
- PAT-A1025 PAT Ranking
- lfw分类 python_无法在sklearn中使用LFW数据集
- 海思Hi3559A GPIO操作
- python卡方拟合性检验_卡方分布、卡方独立性检验和拟合性检验理论及其python实现...
- 做一晚黄牛能坑多少昧心钱?
- leetcode 717. 1比特与2比特字符(python)
- 小米4 手机红外接口工作了
- Android默认设置MTP模式
- FIR滤波器与IIR滤波器
- 未来新一代计算机发展趋势有,未来计算机的发展趋势
- VBA 数值-文本转换
- 2019-2020-1 1823《程序设计与数据结构》第一周作业总结