徽章打洞问题

题目的大致含义;老师抓了n个调皮的孩子,要往他们物品上打洞。从任一个孩子开始,打完之后这孩子指向另一个孩子说是他干的,于是另一个孩子也被打上了洞。于是他也指责别人。周而复始,老师发现有一个孩子有两个洞了,所以停止了。
输入;
孩子数目
所有被指的孩子(按顺序132 1先被指后指向3 然后3指2)
输出
从第一个孩子开始。。。。两个洞结束。然后从第二个开始。。。结束,第三个。。结束第n个。。。结束

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>//该题的目的;出现2结束
using namespace std;
int main()
{
	int i,p,n,a[1010],b[1010],c[1010]; //比需求的稍大。	
	
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	
	scanf("%d",&b[i]);//输入被指的熊孩子
	int s=0;
	for(i=1;i<=n;i++)
	{
		memset(a,0,sizeof(a));//每一次都进行数组的从新附零。
		a[i]++;
	 p=b[i];
	while(1)
	{    //在每一次循环中找到2次的,输出。
		a[p]++;
		
		if(a[p]==2)
		{
		c[++s]=p;
		break;
		}
		p=b[p];	
	}
	}
for(i=1;i<=s;i++)
if(i==1)printf("%d",c[i]);
else printf(" %d",c[i]);




return 0;

	}

猜你喜欢

转载自blog.csdn.net/weixin_43960370/article/details/88536457