用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;
}

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

动物目标检测数据集 一、基础信息 数据集名称:动物目标检测数据集 图片数量: - 训练集:9,134张图片 - 验证集:1,529张图片 - 测试集:1,519张图片 总计:12,182张图片 分类类别: Bear(熊)、Cat(猫)、Cattle(牛)、Chicken(鸡)、Deer(鹿)、Dog(狗)、Elephant(大象)、Horse(马)、Monkey(猴子)、Sheep(绵羊) 标注格式: YOLO格式,包含归一化坐标的边界框和数字编码类别标签,支持目标检测模型开发。 数据特性: 涵盖俯拍视角、地面视角等多角度动物影像,适用于复杂环境下的动物识别需求。 二、适用场景 农业智能监测: 支持畜牧管理系统开发,自动识别牲畜种类并统计数量,提升养殖场管理效率。 野生动物保护: 应用于自然保护区监控系统,实时检测特定动物物种,辅助生态研究和盗猎预警。 智能养殖设备: 为自动饲喂系统、健康监测设备等提供视觉识别能力,实现精准个体识别。 教育研究工具: 适用于动物行为学研究和计算机视觉教学,提供标准化的多物种检测数据集。 遥感图像分析: 支持航拍图像中的动物种群分布分析,适用于生态调查和栖息地研究。 三、数据集优势 多物种覆盖: 包含10类常见经济动物和野生动物,覆盖陆生哺乳动物与家禽类别,满足跨场景需求。 高密度标注: 支持单图多目标检测,部分样本包含重叠目标标注,模拟真实场景下的复杂检测需求。 数据平衡性: 经分层抽样保证各类别均衡分布,避免模型训练时的类别偏差问题。 工业级适用性: 标注数据兼容YOLO系列模型框架,支持快速迁移学习和生产环境部署。 场景多样性: 包含白天/夜间、近距离/远距离、单体/群体等多种拍摄条件,增强模型鲁棒性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蒋志昂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值