房间(room)
来源:互联网 发布:js string转date 编辑:程序博客网 时间:2024/06/11 00:00
题目可以到下载频道上下载:题目
本题题目:
Task 1. 房间(room) 空间限制:256MB 时间限制:1s
Description
有n个房间以及m条双向通道。
你需要找到有多少条从1号房间出发到n号房间路径,使得每个房间都恰好经过了一次。
Input
第一行两个数n、m。
接下来m行,每行两个数x、y,描述一条连接房间x和房间y的通道。
保证每条通道连接两个不同的房间,并且每两个房间至多只有一条通道连接。
Output
一行一个数,表示满足要求的路径条数。
Range
1≤n≤10,0≤m≤n*(n-1)/2
Sample
room.in
5 7
1 2
1 3
3 2
3 4
1 5
5 4
4 2
room.out
2
两条路径分别是:1-2-3-4-5和1-3-2-4-5。
这题是一道搜索题,直接套搜索模板就可以了:
void dfs()//参数用来表示状态{ if(到达终点状态) { ...//根据题意来添加 return; } if(越界或者是不符合法状态) return; for(扩展方式) { if(扩展方式所达到状态合法) { ....//根据题意来添加 标记; dfs(); 修改(剪枝); (还原标记); //是否还原标记根据题意 //如果加上(还原标记)就是 回溯法 } }}代码:
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<list>std::vector< std::list<int> > map1;int limit[100];int get_ans(int now,int target,int deep){if(limit[now]==1)return 0;if(deep==target-1)return now==target;int ans = 0;limit[now] = 1;for(std::list<int>::iterator it = map1[now].begin();it!=map1[now].end();it++)ans += get_ans(*it,target,deep+1);limit[now] = 0;return ans;}int main(){freopen("room.in","r",stdin);freopen("room.out","w",stdout);int n,m;std::cin>>n>>m;map1.resize(n+1);for(int i = 0;i<m;i++){int a,b;std::cin>>a>>b;map1[a].push_back(b);map1[b].push_back(a);}std::cout<<get_ans(1,n,0);fclose(stdin);fclose(stdout);return 0;}其中有用到list的迭代器,如果你不知道这是什么,请访问:点击打开链接
阅读全文
0 0
- 房间(room)
- 用Photon中的room做麻将房间
- Room
- 房间爱是个大房间卡爽肤水
- Chat Room
- chat room
- My room
- xmpp room
- Wonder Room
- room问题
- Android Room
- 走错房间
- 房间---博客
- 房间安排
- 房间安排
- 房间安排
- 聊天房间!
- 房间安排
- 第一篇博客:开启转行之路
- 成功母乳喂养的五大秘密
- 新生儿喂奶那些事
- 华为OJ---给定n个字符串,对n个字符串按照字典序排列
- 如何哄宝宝睡觉?
- 房间(room)
- 三个小动作防病效果立竿见影
- tp3.2中生成微信推广二维码
- 多年iOS开发经验总结(一)
- 青岛市新生儿出生后各种手续…
- 齐次坐标的理解(转载)
- python3中requests中使用ip代理池随机生成ip
- 设计模式资料大全
- C++获取当前系统时间的方法(转载)