OpenJudge计算概论-比饭量【枚举法、信息数字化】

简介: /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 65536kB 描述 3个人比饭量,每人说了两句话: A说:B比我吃的多,C和我吃的一样多 B说:A比我吃的多,A也比C吃的多 C说:我比B吃得多,B比A吃的多。
/*======================================================================
比饭量
总时间限制: 1000ms 内存限制: 65536kB
描述
3个人比饭量,每人说了两句话:
A说:B比我吃的多,C和我吃的一样多
B说:A比我吃的多,A也比C吃的多
C说:我比B吃得多,B比A吃的多。
事实上,饭量和正确断言的个数是反序的关系。
请编程按饭量的大小输出3个人的顺序。

输入
无输入
输出
按照饭量大小输出3人顺序,比如:
ABC
样例输入
无
样例输出
无

解析:这个题目在OpenJudge提交时,题目意思不清晰,应该按饭量从小到大的顺序输出字母 
用三重for循环枚举所有可能的解
对每一种可能的解计算每一个人正确断言的数量 
然后把饭量、正确断言数量分别打包到数组(把人对应的编号一起封装)
对两个数组进行排序(一个由大到小,另一个由小到大) 
检测两个数组每一个元素对应的人名字是否一致,若所有人的名字一致,得到一个可行解。输出
继续循环寻找下一个可行解 
========================================================================*/
 1 #include<iostream>
 2 using namespace std;
 3 struct person
 4 {
 5     int n;//饭量或者断言数量
 6     char name;//名字 
 7 };
 8 int main()
 9 {
10     int a,b,c;//三者的范围都是1~3,这里把a、b、c的值看作他们的饭量(不一定要用1~3,只要能区分出三个数的大小就行了)
11     //当然,也可以换一下思路,用a、b、c表示饭量排名
12     int A,B,C;//表示断言正确的数量 
13     struct person x[3],y[3],t;
14     int i,j,flag;
15     for(a=0;a<3;a++)
16     {
17         for(b=0;b<3;b++)
18         {
19             for(c=0;c<3;c++)
20             {
21                 A=(b>a)+(c==a);
22                 B=(a>b)+(a>c);
23                 C=(c>b)+(b>a);
24                 /*假如三个人的饭量不会相等、三个人的断言正确数量也不会相等,
25                 下面就判断a+A、b+B、c+C是否都相等,都等于3就行了。
26                 但是这个题目,三个人饭量可能相等,断言正确数量也可能一样,必需用其他方式*/ 
27                 //下面把a、b、c、A、B、C分别放到数组x、y当中。 然后对x、y数组进行排序
28                 x[0].n=a;x[0].name='A';
29                 x[1].n=b;x[1].name='B'; 
30                 x[2].n=c;x[2].name='C';
31                 y[0].n=A;y[0].name='A';
32                 y[1].n=B;y[1].name='B'; 
33                 y[2].n=C;y[2].name='C';
34                 //对x数组按元素的饭量从大到小排序,对y数组按元素的断言正确数量从小到大排序
35                 for(i=1;i<3;i++)
36                 {
37                     flag=1;
38                     for(j=0;j<3-i;j++) 
39                     {
40                         if(x[j].n<x[j+1].n)
41                         {
42                             flag=0;
43                             t=x[j];
44                             x[j]=x[j+1];
45                             x[j+1]=t;
46                         }
47                     }
48                     if(flag) break; //if(flag==1) break;
49                 }
50                 
51                 for(i=1;i<3;i++)
52                 {
53                     flag=1;
54                     for(j=0;j<3-i;j++) 
55                     {
56                         if(y[j].n>y[j+1].n)
57                         {
58                             flag=0;
59                             t=y[j];
60                             y[j]=y[j+1];
61                             y[j+1]=t;
62                         }
63                     }
64                     if(flag) break; //if(flag==1) break;
65                 }
66                 //从头到尾检查x和y数组每一个元素对应的是否是同一个人 
67                 for(i=0;i<3;i++)
68                 {
69                     if(x[i].name!=y[i].name) break;
70                 }
71                 if(i==3)
72                 {//输出结果 
73                     for(i=2;i>=0;i--)
74                         cout<<x[i].name;
75                     cout<<endl;
76                 }
77             }
78         }
79     }
80     return 0;
81 }

 

相关文章
MySQL8.0新特性之公用表表达式学习
公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。
281 0
|
缓存 自然语言处理 物联网
LLama Factory+ModelScope实战——使用 Web UI 进行监督微调
LLaMA Factory 是一个高效的大语言模型训练和推理框架,它通过提供一站式的 Web UI 界面和集成多种训练方法,简化了大模型的微调过程,并能够适配多种开源模型。
|
12月前
|
人工智能 自然语言处理 自动驾驶
【通义】AI视界|微软和 OpenAI 将向媒体提供1000万美元资助,推动其使用AI工具
本文概览了近期科技领域的五大热点事件,包括微软与OpenAI联手资助媒体使用AI工具、OpenAI任命前白宫官员为首任首席经济学家、特斯拉FSD系统遭调查、英伟达市值逼近全球第一、以及AMD新一代锐龙9000X3D系列处理器即将上市的消息。更多资讯,请访问通义官网。
|
IDE 开发工具 git
git如何解决冲突|4-19
git如何解决冲突|4-19
|
11月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
349 3
|
JSON JavaScript 前端开发
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
这篇文章讨论了在Vue项目中封装axios的最佳实践,包括设置接口请求前缀、请求头、状态码、请求方法的封装,以及如何使用请求和响应拦截器来处理token和响应状态,从而简化HTTP请求的配置和错误处理,提高代码的可维护性。
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
|
设计模式 前端开发 JavaScript
webpack实战之手写一个loader和plugin
该文章详细讲解了如何从零开始编写一个自定义的Webpack Loader和Plugin,包括它们的工作原理、开发步骤以及如何将自定义的Loader和Plugin集成到Webpack配置中。
webpack实战之手写一个loader和plugin
|
监控 关系型数据库 MySQL
MySQL锁机制与解决死锁问题
MySQL锁机制与解决死锁问题
580 5
|
SQL 存储 关系型数据库
不懂索引,简历上都不敢写自己熟悉SQL优化
大家好,我是考哥。今天给大家带来MySQL索引相关核心知识。对MySQL索引的理解甚至比你掌握还重要,索引是优化SQL的前提和基础,我们一步步来先打好地基。当MySQL表数据量不大时,缺少索引对查询性能的影响都不会太大,可能都是0.0几秒;但当表数据量逐日递增时,建立一个合适且优雅的索引就至关重要了。
945 2
不懂索引,简历上都不敢写自己熟悉SQL优化
|
存储 运维 安全
导论|数据可信流通 从运维信任到技术信任
《数据二十条》提出建立数据可信流通体系,强调全流程合规与监管,确保数据来源合法、隐私保护和交易规范。数据已成为数字经济的关键要素,但面临身份确认、利益依赖、能力预期和行为后果的信任挑战。安全事件暴露了所有权保障和越权使用风险,外循环模式下责任主体不清、利益不一致等问题突显。为解决信任问题,需从运维信任转向技术信任,利用密码学和可信计算实现身份确认、利益对齐、能力预期和行为审计。关键技术包括可信数字身份验证、使用权跨域管控、安全分级测评和全链路审计。数据密态时代借助密码学保障数据全生命周期的安全可控,降低流通风险,实现广域数据的可信流通。基础设施如密态天空计算将支持这一转型。
297 0