用C语言解答林尼的题目

林尼的题目

随着原神4.0的推出,旅行者们的二创内容又打开了新的领域,今天我们来看看这道来自原神的二创题目,如下:在这里插入图片描述

分析

1.我们可以用数组来代表酒的类型,用数值来代表不同的瓶子,例如:
我们可以用’1’来代表甲;用’2’来代表乙;用’3’来代表丙;用’4’来代表丁;
用arr[1]来代表蒲公英酒;用arr[2]来代表苹果酿;用arr[3]来代表枫达;用arr[4]来代表假日果酿;

1==甲 , 2==乙 , 3 ==丙 , 4==丁
arr[1]==蒲公英酒 , arr[2]==苹果酿 ,  arr[3]==枫达 ,  arr[4]==假日果酿

所以我们在这最后打印结果的时候可以这样写:

void answer(int* arr,int n)
{
   switch (n)
   {
   case 1:
   	printf("甲为");
   	break;
   case 2:
   	printf("乙为");
   	break;
   case 3:
   	printf("丙为");
   	break;
   case 4:
   	printf("丁为");
   	break;
   }
   switch (arr[n])
   {
   case 1:
   	printf("蒲公英酒\n");
   	break;
   case 2:
   	printf("苹果酿\n");
   	break;
   case 3:
   	printf("枫达\n");
   	break;
   case 4:
   	printf("假日果酿\n");
   	break;
   }
}

2.接着我们由题目可以知道瓶中为"4"(即为假日果酿)时标签为假,所以我们可以尝试用循环来假定不同瓶子对应假日果酿的结果,而且为了方便瓶子的数字与饮料的数字对应我们可以这样开头,如下:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
   int guess = 0;
   srand((unsigned int)time(NULL));
   int arr[5] = { 0 };
   for (guess = 1; guess < 5; guess++)
   {
   		*(arr + guess) = 4;
		//主要执行内容.......
   }
   		return 0;
}

3.在我们做好准备工作后,下面我们来研究一下主要执行内容,这里分为两个部分:
其一为对应填补,也就是让不同瓶子对应不同的饮料;
其二为判断部分,这个环节要判断上一步的对应关系是否满足题目条件;

a. 在第一部分中,我们要让除了装有"4"的瓶子以外的瓶子随机排入"1",“2”,“3”,并且他们的值不能相同,所以代码可以这样写:

int n = 1;
		while (n)
		{
			for (int i = 1; i < 5; i++)
			{
				if (i == guess)
				{ }
				else
					*(arr + i) = rand() % 3 + 1;
			}
			int count = 0;
			for (int i = 0; i < 4; i++)
				if (arr[i] != arr[1 + i] && arr[1] != arr[3] && arr[1] != arr[4] && arr[2] != arr[4])
					count++;
			if (count == 4)
				n--;
		}

这样写我们就可以在不影响for循环猜想的瓶子情况下,来填补其他瓶子。

b.我们再来看看题目中的条件:
在这里插入图片描述
所以我们可以得出:
甲对应–>(arr[2]==1);
乙对应–>(arr[3]!=1);
丙对应–>(arr[4]==3);
而这里的丁比较有意思,因为他的对与错似乎也难以判断瓶中的饮料,但是如果他错也就意味着前三个都对并且他为"4",所以我们可以知道:
丁对应–>((arr[2] == 1) + (arr[3] != 1) + (arr[4] == 3)!=3);
又因为我们这里用的是 rand 来填补第一部分的空瓶,所以我们需要一直循环直到遇见正确答案为止,因此我们也要在循环末尾加上这个:

	if (guess == 4)
			guess = 1;

第二部分判断代码如下:

		int brr[4] = { (arr[2] == 1) , (arr[3] != 1) , (arr[4] == 3) ,((arr[2] == 1) + (arr[3] != 1) + (arr[4] == 3)!=3)};
		if ( brr[0] + brr[1] + brr[2] + brr[3] == 3)
			for (int jud = 1; jud <= 4; jud++)
				if (brr[jud - 1] == 0 && arr[jud] == 4)
				{
					for (int name = 1; name < 5; name++)
						answer(arr, name);
					return;
				}
		if (guess == 4)
			guess = 1;

OK!到这里就分析完了,下面我们来看看答案吧!

答案

小编将所有的代码整合后,代码及其运行程序如下:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
 answer(int* arr,int n)
{
	switch (n)
	{
	case 1:
		printf("甲为");
		break;
	case 2:
		printf("乙为");
		break;
	case 3:
		printf("丙为");
		break;
	case 4:
		printf("丁为");
		break;
	}
	switch (arr[n])
	{
	case 1:
		printf("蒲公英酒\n");
		break;
	case 2:
		printf("苹果酿\n");
		break;
	case 3:
		printf("枫达\n");
		break;
	case 4:
		printf("假日果酿\n");
		break;
	}
}
int main()
{
	int guess = 0;
	srand((unsigned int)time(NULL));
	int arr[5] = { 0 };
	for (guess = 1; guess < 5; guess++)
	{
		*(arr + guess) = 4;
		int n = 1;
		while (n)
		{
			for (int i = 1; i < 5; i++)
			{
				if (i == guess)
				{ }
				else
					*(arr + i) = rand() % 3 + 1;
			}
			int count = 0;
			for (int i = 0; i < 4; i++)
				if (arr[i] != arr[1 + i] && arr[1] != arr[3] && arr[1] != arr[4] && arr[2] != arr[4])
					count++;
			if (count == 4)
				n--;
		}
		int brr[4] = { (arr[2] == 1) , (arr[3] != 1) , (arr[4] == 3) ,((arr[2] == 1) + (arr[3] != 1) + (arr[4] == 3)!=3)};
		if ( brr[0] + brr[1] + brr[2] + brr[3] == 3)
			for (int jud = 1; jud <= 4; jud++)
				if (brr[jud - 1] == 0 && arr[jud] == 4)
				{
					for (int name = 1; name < 5; name++)
						answer(arr, name);
					return;
				}
		if (guess == 4)
			guess = 1;
	}
	return 0;
}

在这里插入图片描述
好了,到这里我们也就成功的解决了林尼的题目!
并且这也是本期的全部内容了,谢谢大家!!!

内容概要:2025年大宗商品市场展望报告由世界银行发布,分析了能源、农业、金属和矿物、贵金属以及化肥等多个主要商品类别的市场发展与前景。报告指出,由于全球经济增长放缓和贸易紧张加剧,2025年大宗商品价格预计总体下降12%,2026年进一步下降5%,达到六年来的最低点。油价预计2025年平均为每桶64美元,2026年降至60美元,主要受全球石油消费放缓和供应增加的影响。农业商品价格预计2025年基本稳定,2026年下降3%,其中粮食和原材料价格分别下降7%和2%,但饮料价格上涨20%。金属价格预计2025年下降10%,2026年再降3%,特别是铜和铝价格将显著下跌。贵金属如黄金和白银因避险需求强劲,预计价格将继续上涨。报告还特别关注了疫情后大宗商品周期的变化,指出周期变得更短、更剧烈,主要受到宏观经济冲击、极端天气事件和地缘政治冲突的影响。 适用人群:对全球经济趋势、大宗商品市场动态及其对不同经济体影响感兴趣的政策制定者、投资者、分析师及研究机构。 使用场景及目标:①帮助政策制定者评估全球经济增长放缓对大宗商品市场的影响,从而调整经济政策;②为投资者提供有关未来大宗商品价格走势的风险提示,以便进行投资决策;③协助分析师和研究机构深入理解疫情后大宗商品市场的周期特征,识别潜在的投资机会和风险。 其他说明:报告强调,全球经济增长放缓、贸易紧张加剧以及地缘政治不确定性是影响大宗商品价格的主要因素。此外,极端天气事件和能源转型也对农业和能源商品市场产生了深远影响。报告呼吁各方关注这些结构性变化,并采取相应的风险管理措施。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蒋志昂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值