SGU 125. Shtirlits DFS暴搜
来源:互联网 发布:java启动cmd命令 编辑:程序博客网 时间:2024/06/05 04:43
题目链接点这儿
给一个最大3*3的矩阵,填入的数字最大为9(其实根本到不了),给一种构造条件,问能否构造出来。
这个范围,明显暴搜。。。具体方法就是把一行的状态确定完后开始暴搜下一行并且开始判断上一行中的点是否满足条件。
编不下去了╮( ̄▽ ̄")╭ 。。。下面是代码
#include <bits/stdc++.h>#define max(a,b) ((a)>(b))?(a):(b)#define min(a,b) ((a)>(b))?(b):(a)#define rep(i,initial_n,end_n) for(int (i)=(initial_n);(i)<(end_n);i++)#define repp(i,initial_n,end_n) for(int (i)=(initial_n);(i)<=(end_n);(i)++)#define eps 1.0E-8#define MAX_N 1010using namespace std;typedef pair<int, int> pii;typedef pair<double, double> pdd;typedef long long ll;typedef unsigned long long ull;int a[5][5], b[5][5], n, d[4][2] = { 1, 0, 0, 1, -1, 0, 0, -1 };void dfs(int i, int j);bool check(int i, int j);int main() { scanf("%d", &n); repp(i, 1, n) repp(j, 1, n) scanf("%d", &b[i][j]); dfs(1,1); puts("NO SOLUTION"); return 0;}void dfs(int i, int j) { if(j == n + 1) i++, j=1; if(i == n + 1) { repp(ii, 1, n) if(!check(n, ii)) return ; repp(ii, 1, n) repp(jj, 1, n) printf("%d%c", a[ii][jj], jj == n ? '\n' : ' '); exit(0); } rep(ii, 0, 10) { a[i][j] = ii; if(!(i-1) || check(i-1, j)) dfs(i, j+1); }}bool check(int i, int j) { int ans = 0; rep(ii, 0, 4) if(a[i][j] < a[i+d[ii][0]][j+d[ii][1]]) ans++; return ans == b[i][j];}
0 0
- SGU 125. Shtirlits DFS暴搜
- SGU 125. Shtirlits(dfs)
- Shtirlits - SGU 125 dfs
- SGU 125 Shtirlits(dfs)
- [SGU]125. Shtirlits
- SGU 125. Shtirlits 剪枝技巧
- SGU 125 Shtirlits
- sgu 125 Shtirlits
- SGU 461 Wiki Lists dfs
- sgu125:Shtirlits
- SGU125 Shtirlits
- SGU 322 The Great Union dfs模拟
- sgu 101 Domino 欧拉路径+DFS
- SGU 134. Centroid 树的dfs遍历
- SGU 525Revolutionary Roads (Tarjan+Dfs)
- SGU
- SGU
- SGU
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- vb.net中类型转换函数
- Combo Box
- 第二学期第11周项目3--点类派生直线类
- Android SDK Tools r22.3 下载地址
- SGU 125. Shtirlits DFS暴搜
- 利用VLC库的视频播放器1
- Android4.0 Design之设计规范的十大革新
- Perl 图片验证码 识别分析
- 旋转数组最小值
- linux 内建命令(二) shift命令
- redhat5.4 32位安装mysql 5.6.17数据库及创建数据库实例、配置编码、卸载
- 网络字节序与主机字节序
- 前端工程师的修真秘籍(css、javascript和其它)