一道C语言的基础算法题 请帮我下 困扰好久 思路遇到阻塞

于是他决定从这n个白富美中挑最白的,如果2个同样白,就选择较富的那个,如果2个是还是同样富的,就选择较美的那个.如果2个还是同样美的,那就随挑个吧!输入有多个测试数据每个... 于是他决定从这n个白富美中挑最白的,如果2个同样白,就选择较富的那个,如果2个是还是同样富的,就选择较美的那个.如果2个还是同样美的,那就随挑个吧!

输入
有多个测试数据
每个测试数据输入一个整数n(1<=n<=1000),代表有n个百富美。接下来有n行,每行3个整数 b,f,m,(1<=b<=100,1<=f<=100,1<=m<=100)代表每个白富美的'白',‘富’,'美'

输出
输出的黄爷心中'白富美'的3个参数
样例输入:
4
2 2 2
1 5 8
2 3 3
2 3 5
样例输出:
2 3 5
PS:抱歉 分数不多了 TT
展开
 我来答
匿名用户
2013-11-28
展开全部
使用一个结构体存储,然后再进行函数排序。就可以了!必须用C吗?其实C++中有专门的排序函数,只需要调用一下就差不多了。
更多追问追答
追问
我大一 只学习了C    你可以用C的代码 告诉我代码吗 多谢了
追答
#include
#include
struct ld{
int a,b,c;
}x[1005];
int cmp(const void *p1,const void *q1)
{
struct ld *p=(struct ld *)p1;
struct ld *q=(struct ld *)q1;
if(p->a==q->a)
{
if(p->b==q->b)
return q->c-p->c;
return q->b-p->b;
}
return q->a-p->a;
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d%d%d",&x[i].a,&x[i].b,&x[i].c);
qsort(x,n,sizeof(x[0]),cmp);
printf("%d %d %d\n",x[0].a,x[0].b,x[0].c);
}
return 0;
}
//将a,b,c,换成b,c,m就可以了!
df601562566
2013-11-28 · TA获得超过502个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:341万
展开全部
一个结构表示女人 struct Women{ int white; int rish; int buterful;bool weed_out };
四个属性分别为白,富,美,是否被淘汰。

数组 Women arr[n] 表示n个女人。

3 次for循环,
每次循环,判断下一个属性,

第一次for循环,求arr[i]里面最白的,只要不是最白的,weed_out设为真,表示淘汰,如果只有一个最白,那么直接返回了。
第二次for循环,未淘汰的女人里面最富的。。。。。
第三次for循环,未淘汰的女人里面最美的。。。。。
追问
表示 大一刚学C  还没有接触到结构  可以不用结构 只运用到数组 for等基本语法吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
renshijie1018
2013-11-28 · TA获得超过1006个赞
知道小有建树答主
回答量:1063
采纳率:94%
帮助的人:966万
展开全部
#include<stdio.h>
int main(void)
{
int i, n, j, max;
int b[1002], f[1002], m[1002];
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d%d%d", &b[i], &f[i], &m[i]);
max=0;
for(i=1;i<n;i++)
{
if(b[i]>b[max]||b[i]==b[max]&&f[i]>f[max]||b[i]==b[max]&&f[i]==f[max]&&m[i]>m[max])
max=i;
}
printf("%d %d %d\n", b[i], f[i], m[i]);
}
没有数据测试但编译通过
更多追问追答
追问
你的If 里面写的东西 太难读懂了 测试也不通过
追答
就是3种情况更白,一样白更富、一样白,一样富更美
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱美科
2013-11-28
知道答主
回答量:93
采纳率:0%
帮助的人:31.2万
展开全部
没弄懂,再说的仔细点,再输入只个样例发上网看看
追问
恩 那再给你个样例
输入
3
100 1 1
1 10 10
20 1 1
输出
100 1 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqpcy
2013-11-28 · TA获得超过658个赞
知道小有建树答主
回答量:746
采纳率:66%
帮助的人:364万
展开全部

诫于你是初学者,用基础语句给你写个思路,具体请自行调试


int main()
{
    int n,b,f,m,i;
    int bb=0,ff=0,mm=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %d %d",&b,&f,&m);   
        if(b>bb)//如果输入的比当前的还白
        {
            bb = b;             
            ff = f;
            mm = m;
        } 
        else if(b == bb) //同样白 
        {
            if(f>ff)  //看看谁富
            {
                ff = f;
                mm = m;
            }
            else if(f == ff)
            {
                if(m>mm)  //看看谁美
                    mm = m; 
            }
        }
    }
    printf("bb=%d ff=%d mm=%d",bb,ff,mm);
    
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式