OpenJudge计算概论-称体重【枚举法、信息数字化】
/*======================================================================
称体重
总时间限制: 1000ms 内存限制: 65536kB
描述
赵、钱、孙、李四个人中既有大人也有小孩,给他们称体重时发现,他们每个人的体重都不一样,且体重(单位:公斤)恰好是10的整数倍,且他们的体重都不高 于50公斤,已知赵、钱两人的体重之和恰好等于孙、李两人的体重之和; 赵、李两人的体重之和大于孙、钱两人的体重之和,并且赵、孙俩人的体重之和还小于钱的体重。请编写一个程序,按照由大到小的顺序,打印出四人的姓氏的首字 母和体重数(中间用空格隔开,每人一行)。
输入
无
输出
打印出四人的姓氏的首字母和体重数(中间用空格隔开,每人一行)。
样例输入
无
样例输出
z 10
q 20
s 30
l 40
(以上输出仅用于说明格式)
========================================================================*/
这个题思路是枚举,对枚举得到的解排序并输出,然后继续枚举找下一个解并排序输出,往复循环。
#include<iostream>
using namespace std;
struct person
{
int weight;
char name;
};
int main()
{
int a[]={};//int z,q,s,l;
int flag1,flag2,flag3;
int i,j,flag;
struct person b[],t;
for(a[]=;a[]<=;a[]=a[]+)
{
for(a[]=;a[]<=;a[]=a[]+)
{
if(a[]==a[]) continue;
for(a[]=;a[]<=;a[]=a[]+)
{
if(a[]==a[]||a[]==a[]) continue;
for(a[]=;a[]<=;a[]=a[]+)
{
if(a[]==a[]||a[]==a[]||a[]==a[]) continue;
flag1=;flag2=;flag3=;
if(a[]+a[]==a[]+a[]) flag1=;
if(a[]+a[]>a[]+a[]) flag2=;
if(a[]+a[]<a[]) flag3=;
if(flag1+flag2+flag3==)
{
for(i=;i<;i++)
{
b[i].weight=a[i];
}
b[].name='z';
b[].name='q';
b[].name='s';
b[].name='l';
//下面是对数组b进行的冒泡排序
for(i=;i<;i++)
{
flag=;
for(j=;j<-i;j++)
{
if(b[j].weight<b[j+].weight)
{
flag=;
t=b[j];
b[j]=b[j+];
b[j+]=t;
}
}
if(flag) break; //if(flag==1) break;
}
for(i=;i<;i++)
{
cout<<b[i].name<<' '<<b[i].weight<<endl;
}
}
}
}
}
}
return ;
}
为何不是直接对a数组进行排序呢?假如直接对a数组排序,那就会在排序时改变了四层for循环的循环变量的值,造成循环流程混乱,无法寻找下一组解,结果莫名其妙了。
为何非要用a数组而不是用简单变量来代表那四个人呢?这个问题嘛……其实一开始的想法是没有使用b数组和结构体的呵呵,后来改来改去就变成现在这个样子了。其实都OK了。
OpenJudge计算概论-称体重【枚举法、信息数字化】的更多相关文章
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- OpenJudge计算概论-完美立方【暂时就想到了枚举法了】
/*===================================== 完美立方 总时间限制: 1000ms 内存限制: 65536kB 描述 a的立方 = b的立方 + c的立方 + d的立 ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- OpenJudge 计算概论1007:点评赛车
总时间限制: 1000ms 内存限制: 65536kB描述4名专家对4款赛车进行评论1)A说:2号赛车是最好的:2)B说:4号赛车是最好的:3)C说:3号赛车不是最好的:4)D说: B说错了.事实上只 ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
- OpenJudge计算概论-求特殊自然数【枚举法】【将整数转成字符串】
/*======================================================================== 求特殊自然数 总时间限制: 1000ms 内存限制 ...
- Openjudge计算概论-求序列中的众数
/*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128 ...
随机推荐
- Ubuntu安装samba的问题
问题: root@ubuntu:~# apt-get install samba 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装.如果 ...
- js控制打印 转的
很多时候,我们在做系统的时候要做打印功能,打印在js中其实很简单,不过这个很简单的代码并不能满足我们的特定需求,比如我们需要打印的表单在很多文字的中间,或者文字中包含一些广告或者图片什么的,这就很难用 ...
- 使用httputils上传图片到服务器
//创建httpUtils对象 HttpUtils mRegHttpUtils = new HttpUtils(); //图片路径 String path = "/sdcard/Downlo ...
- html input
disabled="disabled" <input name="" type="checkbox" value="&quo ...
- PHP startsWith and endsWith
function startsWith($haystack, $needle) { // search backwards starting from haystack length characte ...
- (实用篇)PHP不用递归遍历目录下所有文件的代码
<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ fu ...
- Foobar音乐播放器——最佳音乐播放器 - imsoft.cnblogs
简单皮肤 下载地址:链接: http://pan.baidu.com/s/1kTwn2dh 密码: lf5f
- Map/Reduce的类体系架构
Map/Reduce的类体系架构 Map/Reduce案例解析: 先以简单的WordCount例程, 来讲解如何去描述Map/Reduce任务. public static void main(Str ...
- java List 排序 Collections.sort()
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class ...
- Qt 串口编程学习1
1.测试设备:USB 转串口 将RX和TX短接 2.开发环境:windows 1安装Qt for windows 2测试,新建项目编译 出现问题 Cannot find file: C:\Docume ...