360笔试题——找老乡

本文探讨了一种通过数组实现的算法问题,旨在帮助小明找到他的老乡。文章详细解释了如何通过递归函数遍历数组,间接获取特定同学的老乡信息,并通过实例展示了算法的应用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

今天小明开学,很高兴见到新同学,想找到自己的老乡。可是这里有个奇怪的规则,当问某一个同学时,该同学只能说是某某同学的老乡。从而间接知道哪些同学是自己的老乡。

e.g.

如果小明班上有10名同学,(可用一个一维的数组表示,10个元素;下标为10个同学,对应的值为对应的一个老乡)问其他同学的结果为:

0,1,2,3,4,5,6,7,8,9      // 10个同学

0,9,8,7,2,7,8,5,0,4      // 对应的一个老乡

注:0表示小明。

#include <iostream>
using namespace std;
void fn(int a[], int b[], int t)
{
	for (int i = 1; i < 10; i++)
	{
		if (a[i] == t)
		{			
			b[i] = i;
			fn(a, b, b[i]);
		}
	}
}
void main()
{
	int a[10] = { 0, 9, 8, 7, 2, 7, 8, 5, 0, 4 };
	int b[10] = { 0 };
	for (int i = 1; i < 10; i++)
	{
		b[i] = 10;
	}
	int cnt = 0;
	fn(a, b, a[0]);
	for (int i = 1; i < 10; i++)
	{
		if (b[i] != 10)
		{
			cout << i << ' ';
			cnt++;
		}
			
	}
	cout << endl << cnt << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值