当前位置: 首页 > news >正文

习题4.1 输出3个人的顺序

3个人比饭量大小,每人说了两句话。

A说: B比我吃得多,C和我吃得一样多。

B说: A比我吃得多,A也比C吃得多。

C说: 我比B吃得多,B比A吃得多。

事实上饭量越小的人讲对的话越多。请编程按饭量的大小输出3个人的顺序。

//************************************************
//* Source Name: ChapterFour_ExerciseOne.cpp
//* Founction  : Output the order of 3 people
//* Author	   : Skyera
//* Create Time	   : 2025-7-18
//* Modify	   : 
//* Modify Time:
//************************************************
#include <iostream>
#include <vector>
#include <algorithm>struct Person {std::string name;int statementCorrect;int appetite;
};// 检查一个排列是否符合条件
bool checkValue(const std::vector<Person>& people)
{std::vector<Person> sortedPeople = people;// 按饭量从小到大排序std::sort(sortedPeople.begin(),sortedPeople.end(),[](const Person& a, const Person& b){return a.appetite < b.appetite;});// 检查是否满足"饭量越小的人讲对的话越多"for(size_t i=0; i < sortedPeople.size()-1; i++){if(sortedPeople[i].statementCorrect <= sortedPeople[i+1].statementCorrect){return false;}}return true;
}int main()
{// 枚举所有可能的饭量排列(A, B, C的饭量分别为1, 2, 3的一个排列)std::vector<int> perm = {1, 2, 3};do{// 创建三个人物Person A = {"A", 0, perm[0]};Person B = {"B", 0, perm[1]};Person C = {"C", 0, perm[2]};// 计算每个人说对的话的数量// A说: B比我吃得多,C和我吃得一样多。if(B.appetite > A.appetite)	A.statementCorrect++;if(C.appetite == A.appetite)A.statementCorrect++;// B说: A比我吃得多,A也比C吃得多。if(A.appetite > B.appetite)B.statementCorrect++;if(A.appetite > C.appetite)B.statementCorrect++;// C说: 我比B吃得多,B比A吃得多。	if(C.appetite > B.appetite)C.statementCorrect++;if(B.appetite > A.appetite)C.statementCorrect++;std::vector<Person> people = {A, B, C};// 检查是否符合条件if(checkValue(people)){// 按饭量从大到小排序并输出std::sort(people.begin(), people.end(), [](const Person& a, const Person& b){return a.appetite > b.appetite;});std::cout << "饭量从大到小的顺序是: "; for(const auto& p : people) {std::cout << p.name << " ";}std::cout << std::endl;return 0;}}while(std::next_permutation(perm.begin(), perm.end()));std::cout<<"没有符合条件的排列"<<std::endl;return 0;
}

http://www.dtcms.com/a/286886.html

相关文章:

  • APIs案例及知识点串讲(下)
  • NFS读写性能评估与优化指南(上)
  • Android性能优化之电量优化
  • C 语言字符大小写互转:tolower / toupper 详解与实战
  • MySQL使用any_value()函数解决only_full_group_by报错
  • IT 和OT指的什么?
  • 短视频矩阵的时代结束了吗?
  • 智能点餐推荐网站,解决选择困难
  • Linux基础IO通关秘籍:从文件描述符到重定向
  • 使用wrk对api接口进行性能测试
  • 机器视觉基础(直播回放)
  • git从本地仓库添加到远程仓库
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • MinIO 分布式文件系统
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • android14截屏
  • 短视频矩阵系统:从源头到开发的全面解析
  • 电源PCB设计的热管理攻坚战:从散热瓶颈到高功率密度突破
  • 3.0 - 指针-序列化
  • 傅里叶积分法求解偏微分方程
  • 第七章 愿景09 海波龙的坑
  • 【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应
  • springCloud -- 微服务01
  • MoveIt
  • GaussDB join 连接的用法
  • 已经安装numpy,但是报错ModuleNotFoundError: No module named ‘numpy‘
  • 船舶终端数据采集与监管平台解决方案
  • EasyGBS算法算力云平台:算法仓百种算法,全形态算力协同
  • Python 之地址编码识别
  • 判断数据类型的方法