ECJTU ACM18级队员寒假训练赛1 D题 HDU - 2181

#include<stdio.h>
#include<string.h>
using namespace std;

int map[25][4],path[25]; //map数组建立联系,path数组储存路径
int m,k=1;
bool vis[25];// 标记数组

void dfs(int cur,int step) //cur当前所在的顶点, step当前所走的路径
{
vis[cur]=1;
path[step]=cur; //储存
for(int i=0;i<3;i++)
{
int x=map[cur][i];
if(x==m&&step==19) //若下一步(即当前步数为19步,因为20个顶点走到了第19个)满足到达起点 ,则输出储存的路径
{
printf("%d: ",k++);
for(int j=0;j<20;j++)
printf("%d ",path[j]);
printf("%d\n",m);
}
if(!vis[x]) //若下一步不能到达终点并且下一个点没有被访问,访问下一个点 ,步数+1
dfs(x,step+1);
}
vis[cur]=0; //这里很难理解, 可以跟上面的vis[cur]=1,当做一个整体来理解,一个完整的dfs结束后将标记变为0,才可以回溯上来找其他到达终点的路径
}

int main()
{
for(int i=1;i<=20;i++)
scanf("%d%d%d",&map[i][0],&map[i][1],&map[i][2]); //题意1~20个顶点 注意不要for(0~n-1)
while(scanf("%d",&m)!=EOF)
{
if(m==0)
break; //跳出
memset(vis,0,sizeof(vis));
memset(path,0,sizeof(path)); //初始化
dfs(m,0); //以起点和深入步数dfs
}
return 0;
}

原文地址:https://www.cnblogs.com/yuanweidao/p/10296201.html

时间: 2024-10-10 12:28:58

ECJTU ACM18级队员寒假训练赛1 D题 HDU - 2181的相关文章

ECJTU ACM18级队员寒假训练赛 D题 CodeForces 1033A

#include<stdio.h>#include<queue>#include<string.h>#include<math.h>using namespace std; int n,qx,qy,kx,ky,wx,wy; int dx[8]={-1,-1,-1,0,0,1,1,1}; int dy[8]={1,0,-1,1,-1,1,0,-1}; // 方向数组 bool vis[1010][1010]; //标记数组 struct Node{ int x

最后一周第二天训练赛之第二题

试题: B - B Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice SPOJ ICODER Description Mathews uses a brand new 16-bit instruction processor. (Yeah i am being sarcastic!). It has one register (say R) and it su

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&amp;#39;s problem(manacher+二分/枚举)

pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法.求出以第i个点为中心的回文串长度.记录到数组p中 要满足题目所要求的内容.须要使得两个相邻的回文串,共享中间的一部分,也就是说.左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也

Dream_Chaser队训练赛第一场 I题

Dream_Chaser队训练赛第一场 I题 题目来自2012成都区域赛 I - Count Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4472 Description Prof. Tigris is the head of an archaeological team who is currently in charge of a

2017后期 第 1 场训练赛

题目依次为 NKOJ 上 P3496 P4236 P3774 P2407 1.数三角形 方法很多, 比如推出三边 x y z 的限制关系, 然后加加减减得到计算式子 不过也可以用观察法, 暴力计算出 n 为 1 至 13 对应的结果为: 0 0 0 1 3 7 13 22 34 50 70 95 125 相邻两数差为: 0 0 1 2 4 6 9 12 16 20 25 30 这些相邻两数相邻差又为: 0 1 1 2 2 3 3 4 4 5 5 找到规律了, 如果结果第 i 项为第 i - 1

早晨训练赛第一场 B题 哈希

早晨训练赛第一场 B题 B - Trees in a Row Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 402B Description The Queen of England has n trees growing in a row in her garden. At that, the i-th (1 ≤ i 

zzuli训练赛_05_13-K

题意: 是输入N,2<=N<=100000,求N的质因子个数. 样例输入12 5 30 样例输出2 1 3 提示 12 = 2 * 2 * 3 5 = 5 30 = 2 * 3 * 5 解题思路: 就写个判断质数的函数,循环判断就可以,不过不是质数就加,是不同的质数. 具体代码: #include<iostream> #include<cmath> #include<cstring> using namespace std; bool temp[100000

校队训练赛,同时也是HDU4497(数论:素数分解+组合数学)

一.题目 http://acm.hdu.edu.cn/showproblem.php?pid=4497 二.思路 将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y',x') = 1,同时lcm(x',y',x') = G/L.特判,当G%L != 0 时,无解.然后素数分解G/L,假设G/L = p1^t1 * p2^t2 *````* pn^tn.满足上面条件的x,y,z一定为这样的形式.x' = p1^i1 * p2^i2 *```* pn^in.y' =