当前位置: 首页 > 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.xdnf.cn/news/1144675.html

相关文章:

  • 一文了解CDA
  • 优先算法——专题九:链表
  • 25数据库三级备考自整理笔记
  • 让管理软件回归简单实用:软件定制开发之道
  • 微信小程序商品结算功能
  • 网络原理 ——HTTPS
  • Linux服务器端口被占用?
  • 【leetcode】3202. 找出有效子序列的最大长度(2)
  • RV126平台NFS网络启动终极复盘报告
  • 二进制专项
  • 分表聚合助手类
  • 常用的折叠展开过渡动画效果css
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • Python数据类型探秘:解锁编程世界的魔法钥匙
  • JavaScript 的垃圾回收机制
  • Maven下载安装与idea配置
  • FLTK UI窗口关闭时延时卡顿问题全流程分析与优化实战
  • 探索 Vue 3.6 的新玩法:Vapor 模式开启性能新篇章
  • 帆软可视化图
  • Vue3 从 0 到 ∞:Composition API 的底层哲学、渲染管线与生态演进全景
  • JavaScript笔记
  • 【JS笔记】Java Script学习笔记
  • C#将【程序集引用-依赖关系】展示到NetronLight图表中
  • Java 核心工具类 API 详解(一):从 Math 到 Runtime 的实用指南
  • 设计模式五:桥模式(Bridge Pattern)
  • wedo牛-----第47节(免费分享图纸)
  • MBIST - Memory BIST会对memory进行清零吗?
  • 基于单片机的便携太阳能光伏系统研究
  • C语言—如何生成随机数+原理详细分析
  • 20250718-FDU-HDUOJ钉耙编程一