博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs1116
阅读量:6265 次
发布时间:2019-06-22

本文共 1223 字,大约阅读时间需要 4 分钟。

题目连接:http://codevs.cn/problem/1116/

这道题也是一道深搜的题   思路就是从第一个点开始搜索然后进行判断看这个颜色能不能添如果能添就继续下一个点   一样解释在代码中写了很多 下面看代码

#include
#include
int n;struct node{ int num; //这个是看这个点是第几个点 int color; //看这个点用的什么颜色}a[10];int mark[10][10]; //看哪个点和哪个点不能填一样的int sum = 0; //记录方法的数量void dfs(int x,int y){ if(x > y) { sum++; return ; } else { } for(int i = 1;i <= 4;i++) { int flag = 0; for(int j = 1;j <= y;j++) { if(mark[j][x] == 1&&i == a[j].color) //判断这个颜色能不能填 { flag = 1; break; } } if(flag == 1) { continue; } else { a[x].color = i; dfs(x + 1,y); a[x].color = 0; //这个地方别忘了 不然就会没有几种方法 } }}int main(){ scanf("%d",&n); for(int i = 0;i <= 10;i++) { a[i].num = i; a[i].color = 0; } for(int i = 1;i <= n;i++) { for(int j = 1;j <= n;j++) { scanf("%d",&mark[i][j]); // printf("%d ",mark[i][j]); } } dfs(1,n); printf("%d\n",sum);}

 

转载于:https://www.cnblogs.com/zhanyage110/p/4395523.html

你可能感兴趣的文章
对/etc/rc.d/init.d目录的一点理解(转)
查看>>
c#使用params重载方法
查看>>
浅析C# 中object sender与EventArgs e
查看>>
遇到Audio/Speech相关问题,如何抓取log
查看>>
数学之路(3)-机器学习(4)-专家系统(1)
查看>>
Android中常用单位dp,px,sp之间的相互转换
查看>>
C++线性方程求解
查看>>
nginx负载均衡的实现
查看>>
Oracle PL/SQL之LOOP循环控制语句
查看>>
Webkit内核的浏览器中用CSS3+jQuery实现iphone滑动解锁效果(译)
查看>>
Can't create handler inside thread that has not called Looper.prepare()
查看>>
MDaemon运行六年方法
查看>>
SQL SERVER 存储过程应用
查看>>
Locale ID (LCID) Chart 区域设置ID
查看>>
Microsoft Windows Scripting Self-Paced Learning Guide
查看>>
Windows Phone Background Agent杂谈
查看>>
AJAX POST&跨域 解决方案 - CORS(转载)
查看>>
Vim中的swp文件
查看>>
[iphone-objective C]去掉一段String中的HTML标签
查看>>
NSArray与NSMutableArray的区别
查看>>