因⃰俊⃰ 2021-05-22 22:02 采纳率: 100%
浏览 35
已采纳

求各位大佬来讲解,救救孩子吧

有n根厚度可以忽略不计的火柴,第i根火柴的长度为aj。 约翰想要从中选取四根火柴(显然每根火柴只能被选取一次),并用这四根火柴分别作为四条边围成 一个矩形。约翰想要你告诉他,在所有选取方案中,矩形面积的最大值是多少。

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-22 22:54
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <map>
    using namespace std;
    int main()
    {
    	printf("请输入火柴的根数:");
    	int n;
    	scanf("%d",&n);
    	printf("请输入火柴的长度:");
    	int buf[100] = {0};  //存储火柴的长度
    	for(int i = 0; i < n; i++)
    		scanf("%d",&buf[i]);
    	//1.统计每种长度的火柴的根数,因为如果要组成矩形
    	//至少需要2根相同长度的火柴
    	map<int,int> mapLength;
    	map<int,int>::iterator it = mapLength.begin();
    	for (int i = 0; i < n; i++)
    	{
    		it = mapLength.find(buf[i]);
    		if (it == mapLength.end())
    		{
    			mapLength.insert(pair<int,int>(buf[i],1));
    		}else
    		{
    			int len = it->second + 1;
    			mapLength.erase(it);
    			mapLength.insert(pair<int,int>(buf[i],len));
    		}
    	}
    	
    	//2.将map中数量少于2的火柴删除
    	for (it = mapLength.begin(); it != mapLength.end(); )
    	{
    		if (it->second < 2)
    		{
    			mapLength.erase(it);
    			it = mapLength.begin();
    		}else
    			it++;
    	}
    	for (it = mapLength.begin(); it != mapLength.end(); it++)
    		printf("长度为%d的火柴数量=%d\n",it->first,it->second);
    
    	//因为map能够根据key自动排序,且按照从小到大的顺序排列
    	//所以,map中最后一个元素是最长的火柴长度,
    	//找最大矩形的话,就取最后两个元素的长度即可
    	int mj = 0;
    	if (mapLength.size() < 2)
    	{
    		//如果map中没有2组相同长度的火柴,则说明无法组成矩形
    		//do nothing
    		printf("无法组成矩形\n");
    	}else
    	{
    		it = mapLength.end();
    		it--;
    		int leng = it->first;
    		it--;
    		int leng2 = it->first;
    		mj = leng * leng2;
    		printf("最大面积=%d * %d = %d\n",leng,leng2,mj);
    	}
    	
    	getchar();
    	getchar();
    	return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?
  • ¥15 YOLOv8obb获取边框坐标时报错AttributeError: 'NoneType' object has no attribute 'xywhr'