凑木棒

凑木棒

我从我自己QQ空间转来的算原创吧

题目描述

老师有N根长度相同的木棒,长度是一个整数。他把每一根木棒都锯成两半,其中一半给小明,另一半给小红,每一半的长度恰好都是整数。
老师让小明和小红测量出各自手中的N根半截木棒的长度后,提出3个问题:
(1) 原来每根木棒的长度是多少?
(2) 每人都拿出一根半截木棒,能凑成一根木棒的最长长度是多少
(3) 最多能凑成几根最长长度的木棒

注意:凑成的每根木棒必须由小明和小红各拿出一根半截木棒。

输入

第1行: 1个整数N,表示木棒的数量
第2行:N个整数,表示小明的N根半截木棒的长度
第3行:N个整数,表示小红的N根半截木棒的长度

输出

第1行:1个整数L,表示锯之前每根木棒的长度
第2行:1个整数S,表示能凑成一根木棒的最长长度
第3行:1个整数C,表示最多能凑成多少根最长长度的木棒

样例输入

6
2 6 7 1 3 5
5 4 7 8 9 3

样例输出

10
16
1

解题

其实这题目描述有点问题,应该是两段,而不是两半。
第一问也是简单得不能再简单了,加起来除以段数即可。
第二问和第三问直接暴搜即可。
下面是代码

#include<cstdio>
int main()
{
    int a,x,y=0,z=0,m,max1=-1,max2=-1;
    scanf("%d",&a);
    int b[a],c[a];
    for(x=0;x<a;x++)
    {
        scanf("%d",&b[x]);
        y+=b[x];
            if(b[x]>max1)
                max1=b[x];
    }
    for(x=0;x<a;x++)
    {
        scanf("%d",&c[x]);
        y+=c[x];
            if(c[x]>max2)
                max2=c[x];
    }
    for(x=0;x<a;x++)
        for(m=0;m<a;m++)
            if(b[x]+c[m]==max1+max2)
                z++;
    printf("%d\n%d\n%d\n",y/a,max1+max2,z);
}

但是我可没告诉你这是正确代码。
这个代码交上去只会听取WA声一片,那么是哪里错了呢?
其实,这样一个循环,会导致同一段木块重复使用
例如:
小明: 3 3
小红: 5 1 第三问正解应为1 但那个程序会输出2
下面是ac代码

#include<cstdio>
int main()
{
    int a,x,y=0,z=0,m=0,max1=-1,max2=-1;
    scanf("%d",&a);
    int b[a],c[a];
    for(x=0;x<a;x++)
    {
        scanf("%d",&b[x]);
        y+=b[x];
            if(b[x]>max1)
                max1=b[x];
    }
    for(x=0;x<a;x++)
    {
        scanf("%d",&c[x]);
        y+=c[x];
            if(c[x]>max2)
                max2=c[x];
    }
    for(x=0;x<a;x++)
        if(b[x]==max1) z++;
    for(x=0;x<a;x++)
        if(c[x]==max2) m++;
    if(z>m) z=m;
    printf("%d\n%d\n%d\n",y/a,max1+max2,z);
}

由于这个程序是初学时写的,若有错误或观赏性不佳,请多包涵。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值