poj 1564

给出一个s,n个数,输出所有的能够得到s的方案

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int a[];
int ans[];
int n,s,flag; void dfs(int x,int sum,int cnt){
if(sum > s) return;
if(sum == s){
flag = ;
printf("%d",ans[]);
for(int i = ;i < cnt;i++) printf("+%d",ans[i]);
printf("\n");
} for(int i = x;i < n;i++){
ans[cnt] = a[i];
dfs(i+,sum+a[i],cnt+);
while(i+ < n && a[i] == a[i+]) i++;
}
} int main(){
while(scanf("%d %d",&s,&n) != EOF && s){
for(int i = ;i < n;i++) scanf("%d",&a[i]);
printf("Sums of %d:\n",s);
flag = ;
dfs(,,);
if(!flag) printf("NONE\n");
}
return ;
}

poj 2488

骑士周游列国

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int res[][];
int vis[][]; int dir[][] = {-,-, -,, -,-, -,, ,-, ,, ,-, ,}; int m,n;
int flag; void dfs(int x,int y,int cnt){
if(flag) return;
res[cnt][] = x;res[cnt][] = y;
if(cnt == n*m) {
flag = ;
for(int i = ;i <= n*m;i++)
printf("%c%d",res[i][]-+'A',res[i][]);
printf("\n");
return;
} for(int i = ;i < ;i++){
int xx = x+ dir[i][];
int yy = y+ dir[i][];
if(!vis[xx][yy] && xx> && xx <= n && yy > && yy <= m){
vis[xx][yy] = ;
dfs(xx,yy,cnt+);
vis[xx][yy] = ;
}
}
} int main(){
int T;
scanf("%d",&T);
int kase = ;
while(T--){
scanf("%d %d",&m,&n); memset(vis,,sizeof(vis));
vis[][] = ; printf("Scenario #%d:\n",++kase);
flag = ;
dfs(,,); if(!flag) printf("impossible\n");
if(T) printf("\n"); }
return ;
}

poj 3009

这道题自己没有写出来

后来和题解比较了一下,这几个地方写错了

把障碍物击碎后的状态,先改成0搜一遍,等搜完还要再改回1,是为了搜到以后的所有情况

找到起点后,把起点改成0

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; const int INF = ;
int g[][];
int vis[][];
int n,m;
int sx,sy,ex,ey;
int flag,ans;
int dir[][] = {,,,,-,,,-}; int in(int x,int y){
if(x >= && x <= m && y >= && y <= n) return ;
return ;
} void dfs(int x,int y,int step){
if(step > ) return; int i,xx,yy;
for( i = ;i < ;i++){
xx = x+dir[i][];
yy = y+dir[i][]; if(step < ans && in(xx,yy) && g[xx][yy] != ){
while(g[xx][yy] == && in(xx,yy)){
xx +=dir[i][];
yy +=dir[i][];
}
int xx2 = xx-dir[i][];
int yy2 = yy-dir[i][];
if(in(xx,yy)){
if(g[xx][yy] == ){
ans = step+;
return;
}
if(g[xx][yy] == ){
g[xx][yy] = ;//碰到障碍物,将障碍物清除
dfs(xx2,yy2,step+);
g[xx][yy] = ;//这一次dfs完后改回来是为了遍历完以后的所有情况
}
}
}
}
} int main(){
while(scanf("%d %d",&n,&m) != EOF && (m+n)){//输入的是n行m列
memset(g,,sizeof(g));
for(int i = ;i <= m;i++){
for(int j = ;j <= n;j++){
scanf("%d",&g[i][j]);
if(g[i][j] == ) {
sx = i,sy = j;
g[i][j] = ;
}
}
} ans = ;
dfs(sx,sy,);
if(ans > ) printf("-1\n");
else printf("%d\n",ans);
}
return ;
}

poj 1321

给出棋盘,旗子摆放不能同行或者同列,问放k个有多少种办法

感觉和poj 1564有一点点像,搜行,看对应的列是否被占用

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; typedef long long LL;
char g[][];
int vis[];
LL ans;
int n,k; void dfs(int x,int cnt){
if(cnt == k){
ans++;
// printf("ans = %d\n",ans);
return;
}
for(int i = x;i <= n;i++){
for(int j = ;j <= n;j++){
if(g[i][j] == '#' && !vis[j]){
vis[j] = ;
dfs(i+,cnt+);
vis[j] = ;
}
}
}
} int main(){
while(scanf("%d %d",&n,&k) != EOF){
if(n == - && k == -) break;
for(int i = ;i <= n;i++)
for(int j = ;j <= n;j++) cin>>g[i][j]; ans = ;
dfs(,);
printf("%I64d\n",ans);
}
return ;
}

uva 11396

给出一个无向图,再给出一个爪形,问这个无向图是否能够分成一个个爪形的单元

判断是否是二分图

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; const int maxn = ;
vector<int> g[maxn];
int color[maxn];
int n; bool bipartite(int u){
for(int i = ;i < g[u].size();i++){
int v = g[u][i];
if(color[v] == color[u]) return false;
if(!color[v]) {
color[v] = -color[u];
if(!bipartite(v)) return false;
}
}
return true;
} int main(){
int u,v;
while(scanf("%d",&n) != EOF && n){
for(int i = ;i <= n;i++) g[i].clear();
while(scanf("%d %d",&u,&v) != EOF){
if(u == && v == ) break;
g[u].push_back(v);g[v].push_back(u);
}
memset(color,,sizeof(color));
color[] = ;
if(bipartite()) puts("YES");
else puts("NO");
}
return ;
}

dfs___刷题记录的更多相关文章

  1. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  2. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  3. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  4. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  5. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  6. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  7. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

  8. 刷题记录:[DDCTF 2019]homebrew event loop

    目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

  9. 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System

    目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...

随机推荐

  1. "国学"能带给孩子什么?

       您是家长吗?   是!就点标题下方蓝色的 静心坊 三字,然后点关注!您就可以享受到我们为您提供的最新教育信息. 读国学,除大量识字之外,还能带给孩子什么呢? 男孩子读国学,国学能教会他做一个正直 ...

  2. day01_20181223

    今日内容大纲:1,python的出生于应用.2,Python的历史.    python2x:        源码冗余,源码重复,源码不规范.    python3x:源码清晰优美简单.       ...

  3. 解决python3在sublim Text3中中文乱码的问题

    在Tool >> BulidingSystem 中  新建 python3 写入如下代码 { "cmd": ["C:/python3/python.exe&q ...

  4. Centos7安装keepalived(自定义路径安装)-高级篇

    0.Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但 ...

  5. 数据库之JDBC入门

    数据表: 代码实现(注:jar包用的8.0版本) import java.sql.*; import java.util.Scanner; public class MyDatabase { publ ...

  6. python的包装和授权

    包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均 ...

  7. 简述JVM、JRE、JDK的关系及作用

    1.JVM:java虚拟机 . 作用:保证java语言跨平台. 2.JRE:java运行环境 jre=java虚拟机+核心类库. 作用:java程序的运行环境. 3.JDK :java开发工具集.JD ...

  8. centos查看防火墙端口

    #centos7启动防火墙 systemctl start firewalld.service #centos7停止防火墙/关闭防火墙 systemctl stop firewalld.service ...

  9. applicationContext-solr.xml

    一.动态切换单机和集群 spring-solr 的配置 <!-- 单机版 solrj --> <bean id = "httpSolrServer" class= ...

  10. ASP.NET--identity笔记及截图

    aspnetUsers aspnetRoles aspnetUserroles aspnetUserClaims 存储用户user额外信息的键值对 aspnetUserLogins 第三方登陆的控件 ...