华为机试:寻找数组中A=B+2C的组合

寻找给定数组中A=B+2C的组合,(只返回满足条件的任意一组即可)重复数字不算,若不存在这个组合返回0。

如给定数组【2 7 3 0】,返回 7,3,2

int* FindABC(int*arr, int len)
{
	int * res = (int*)malloc(3 * sizeof(int));
	//A=B+2C
	int A = 0, B = 0, C = 0;
	for (size_t i = 0; i < len; i++)//固定第一个数
	{
		for (size_t j = 0; j < len; j++)//固定第二个数
		{
			if (j == i)
				continue;

			for (size_t k = 0; k < len; k++)//查找第三个数
			{
				if (j == k || k==i)
					continue;
				if (arr[i] != arr[j] && arr[j] != arr[k] && arr[i] != arr[k])
				{
					if (arr[i] ==( arr[j] + 2 * arr[k]))
					{
						A = arr[i];
						B = arr[j];
						C = arr[k];
					}
					if (arr[i] == (arr[k] + 2 * arr[j]))
					{
						A = arr[i];
						B = arr[k];
						C = arr[j];
					}
					if (arr[j] == (arr[i] + 2 * arr[k]))
					{
						A = arr[j];
						B = arr[i];
						C = arr[k];
					}
					if (arr[j] == (arr[k] + 2 * arr[i]))
					{
						A = arr[j];
						B = arr[k];
						C = arr[i];
					}
					if (arr[k] == (arr[i] + 2 * arr[j]))
					{
						A = arr[k];
						B = arr[i];
						C = arr[j];
					}
					if (arr[k] == (arr[j] + 2 * arr[i]))
					{
						A = arr[k];
						B = arr[j];
						C = arr[i];
					}
				}
			}
	
		}
	}
	if (A != 0)
	{
		res[0] = A;
		res[1] = B;
		res[2] = C;
		return res;
	}
	else
	{
		free(res);
		return NULL;
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FNR_S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值