/*======================================================================
称体重
总时间限制: 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计算概论-称体重【枚举法、信息数字化】的更多相关文章

  1. OpenJudge计算概论-取石子游戏

    OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...

  2. OpenJudge计算概论-完美立方【暂时就想到了枚举法了】

    /*===================================== 完美立方 总时间限制: 1000ms 内存限制: 65536kB 描述 a的立方 = b的立方 + c的立方 + d的立 ...

  3. Openjudge计算概论——数组逆序重放【递归练习】

    /*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...

  4. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  5. OpenJudge 计算概论1007:点评赛车

    总时间限制: 1000ms 内存限制: 65536kB描述4名专家对4款赛车进行评论1)A说:2号赛车是最好的:2)B说:4号赛车是最好的:3)C说:3号赛车不是最好的:4)D说: B说错了.事实上只 ...

  6. OpenJudge计算概论-最高的分数

    /*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...

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

    /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...

  8. OpenJudge计算概论-求特殊自然数【枚举法】【将整数转成字符串】

    /*======================================================================== 求特殊自然数 总时间限制: 1000ms 内存限制 ...

  9. Openjudge计算概论-求序列中的众数

    /*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128 ...

随机推荐

  1. 结构体,内存,指针例题.DOC

    2015.1.30 递归函数:1.自身调用自己:2.要有结束条件!typedef 后面加分号:一般后面的重定义名加_,例如:typedef unsigned long int uint_16;结构体成 ...

  2. HDU-4828 卡特兰数+带模除法

    题意:给定2行n列的长方形,然后把1—2*n的数字填进方格内,保证每一行,每一列都是递增序列,求有几种放置方法,对1000000007取余: 思路:本来想用组合数找规律,但是找不出来,搜题解是卡特兰数 ...

  3. codeforces 711C Coloring Trees(DP)

    题目链接:http://codeforces.com/problemset/problem/711/C O(n^4)的复杂度,以为会超时的 思路:dp[i][j][k]表示第i棵数用颜色k涂完后bea ...

  4. 解决远程桌面链接时出现"The RPC server is unavailable."或"RPC服务器不可用"的问题

    解决远程桌面链接时出现"The RPC server is unavailable."或"RPC服务器不可用"的问题 解决远程桌面链接时出现"The ...

  5. Linux交叉开发环境搭建 —— 效率之源

    楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: V ...

  6. Java_oop_继承

    不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰.想想还有点小激动呢, OK,睡醒了,我们说到继承就先来学习一下Java中继承的语法. public SubClass exte ...

  7. 3、网页制作Dreamweaver(表单form)

    表单form (虚线不显示) 1.写法: <form id="form1" name="form1" method="post" ac ...

  8. Inno Setup入门(十一)——完成安装后执行某些程序

    Inno Setup入门(十一)——完成安装后执行某些程序 2011-02-16 16:24:23|  分类: Inno Setup |  标签:inno  setup   |举报 |字号 订阅   ...

  9. yii 创建步骤

    1.首先,下载yii框架,解压到www目录下 2.配置php的环境,在控制台输入php,显示下划线表示,路径配置成功 3.在控制台,切换到yii/framework下,运行yiic webapp .. ...

  10. The implementation of Lua 5.0 阅读笔记(二)

    6 线程和协程 读完这篇文章我才意识到python的协程到底缺了什么,这个就是coroutine和semi-coroutine的区别了.区别就是,semi-coroutine只能返回(yield)到调 ...