| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1133 人关注过本帖, 1 人收藏
标题:hdu2550 求助哪里错了,谢谢!
只看楼主 加入收藏
laybaek
Rank: 2
等 级:论坛游民
帖 子:20
专家分:50
注 册:2014-10-21
结帖率:100%
收藏(1)
已结贴  问题点数:28 回复次数:16 
hdu2550 求助哪里错了,谢谢!
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
   int t,n,i,j,k;
   int a[50],b[50];
   scanf("%d",&t);
   while(t--)
   {
       scanf("%d",&n);
       for(i=0;i<n;i++)
       scanf("%d %d",&a[i],&b[i]);
       sort(a,a+n);
       for(i=0;i<n;i++)
       {
       for(k=0;k<b[i];k++)
       {
           printf(">+");
           for(j=1;j<=a[i]-2;j++)
           printf("-");
           printf("+>\n");
       }
       printf("\n");
       }
   }
   return 0;
}

最近写了两道都是要这样排序然后wa掉了 测试是没问题的 所以 求助 谢谢啦!
搜索更多相关主题的帖子: include 
2014-11-16 10:50
laybaek
Rank: 2
等 级:论坛游民
帖 子:20
专家分:50
注 册:2014-10-21
收藏
得分:0 
Problem Description
时维九月,序属三秋,辽军大举进攻MCA山,战场上两军正交锋.辽军统帅是名噪一时的耶律-James,而MCA方则是派出了传统武将中草药123.双方经过协商,约定在十一月八日正午十分进行射箭对攻战.中草药123早早就开始准备,但是他是武将而不是铁匠,造弓箭的活就交给聪明能干的你了,现在告诉你每种弓箭规格,即箭身的长度,以及每种规格弓箭所需要的数目,要求你把需要的弓箭都输出.
弓箭的基本样子为 ">+---+>",其中"+---+"为箭身,数据保证箭身长度 > 2
 

Input
首先输入一个t,表示有t组数据,跟着t行:
每行一个N (N < 50 ),接下去有N行,第i行两个整数Ai , Bi,分别代表需要箭身长度为Ai的弓箭Bi枝. (Ai < 30 , Bi < 10 )
输入数据保证每一个Ai都是不同的.
 

Output
按照箭身的长度从小到大的顺序依次输出所有需要的弓箭,"每一种"弓箭后输出一个空行.
 

Sample Input
1
4
3 4
4 5
5 6
6 7
 

Sample Output
>+-+>
>+-+>
>+-+>
>+-+>

>+--+>
>+--+>
>+--+>
>+--+>
>+--+>

>+---+>
>+---+>
>+---+>
>+---+>
>+---+>
>+---+>

>+----+>
>+----+>
>+----+>
>+----+>
>+----+>
>+----+>
>+----+>



这是题目.
2014-11-16 10:52
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:10 
我用自己的方法做,也没有AC,
这是网上的一个AC代码,你参考,我不知道你的为什么不对,给你顶下
程序代码:
#include <stdio.h> 

    #include<stdlib.h> 

    int main() 

    { 

        int k,n,i,a[50],b[50],j,t,f,m; 

        char str[50][50]; 

        scanf("%d",&k); 

        while(k--) 

        { 

            scanf("%d",&n); 

            for(i = 0; i<n; i++)//记录每组的数据 

            { 

                scanf("%d%d",&a[i],&b[i]); 

            } 

            for(i = 0; i<n-1; i++)//选择法进行排序 

            { 

                f = i; 

                for(j = i+1; j<n; j++) 

                { 

                    if(a[f]>a[j]) 

                        f = j; 

                } 

                if(f!=i) 

                { 

                    t = a[f]; 

                    a[f] = a[i]; 

                    a[i] = t; 

                    t = b[f]; 

                    b[f] = b[i]; 

                    b[i] = t; 

                } 

            } 

            for(i = 0; i<n; i++) 

            { 

                m = a[i]; 

                m-=2; 

                for(j = 0; j<m; j++)//将‘-’的字符存入字符数组之中 

                { 

                    str[i][j] = '-'; 

                } 

                str[i][j] = '\0';//记得最后加结束符号 

            } 

            for(i = 0; i<n; i++) 

            { 

                for(j = 0; j<b[i]; j++) 

                { 

                    printf(">+%s+>\n",str[i]); 

                } 

                printf("\n"); 

            } 

        } 

       system("pause");
        return 0; 

    }  

2014-11-16 20:03
laybaek
Rank: 2
等 级:论坛游民
帖 子:20
专家分:50
注 册:2014-10-21
收藏
得分:0 
回复 3 楼 soulmate1023
很感谢!!
2014-11-16 21:02
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:18 
凑个热闹
程序代码:
#include <stdio.h>
int main()
{
    int a[30], t, n, i, j;
    for(scanf("%d", &t); t--;)
    {
        for(i = 3; i < 30; a[i++] = 0);
        for(scanf("%d", &n); n--; a[i] = j) scanf("%d%d", &i, &j);
        for(i = 3; i < 30; i++)
        {
            if(!a[i]) continue;
            for(; a[i]--; puts("+>"))
            for(printf(">+"), j = 2; j++ < i; putchar('-'));
            puts("");
        }
    }
    return 0;
}

重剑无锋,大巧不工
2014-11-17 12:16
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 5 楼 beyondyf
不得不说,代码真的很牛逼,简练。。。
但是,大神,为什么楼主的AC不了呢?我看了你的代码,
思路上也没什么差别呀,为什么呢???

2014-11-17 17:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 6 楼 soulmate1023
他的排序只对a数组进行,使得a与b的对应关系被打乱了。应该以a为排序条件,但要带着b排序。

重剑无锋,大巧不工
2014-11-17 18:01
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 7 楼 beyondyf
欧,不对,问错了,代码是这样的,这是我写的,依旧过不了。
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
   int t,n,i,j,k;
   int a[50],b[50];
   scanf("%d",&t);
   while(t--)
   {
       scanf("%d",&n);
       if(n>=50) exit(1);
       for(i=0;i<n;i++)
       {scanf("%d %d",&a[i],&b[i]);
       if(a[i]>=30||b[i]>=10) exit(1);
       }
   int temp;
   for(i=0;i<n-1;i++)
     for(j=0;j<n-1-i;j++){
       if(a[j]>a[j+1]){
         temp=a[j];
         a[j]=a[j+1];
         a[j+1]=temp;
         temp=b[j];
         b[j]=b[j+1];
         b[j+1]=temp;
         }
         }
      for(i=0;i<n;i++)
       {
       for(k=0;k<b[i];k++)
       {
           printf(">+");
           for(j=1;j<=a[i]-2;j++)
           printf("-");
           printf("+>\n");
       }
       printf("\n");
       }
      

   }
   system("pause");
   return 0;
}

2014-11-17 18:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 8 楼 soulmate1023
system("pause");也出现在你提交的代码中了么?

上面对数据范围在判断也是不必要的,玩acm可以设定输入数据是绝对精确的。

重剑无锋,大巧不工
2014-11-17 18:29
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:0 
回复 9 楼 beyondyf
嗯,这个我也试了,不过也不可以,就是一直是编译错误。
下面就是把你说的那几句删了。。
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
   int t,n,i,j,k;
   int a[50],b[50];
   scanf("%d",&t);
   while(t--)
   {
       scanf("%d",&n);
     
       for(i=0;i<n;i++)
       {scanf("%d %d",&a[i],&b[i]);
      
       }
   int temp;
   for(i=0;i<n-1;i++)
     for(j=0;j<n-1-i;j++){
       if(a[j]>a[j+1]){
         temp=a[j];
         a[j]=a[j+1];
         a[j+1]=temp;
         temp=b[j];
         b[j]=b[j+1];
         b[j+1]=temp;
         }
         }
      for(i=0;i<n;i++)
       {
       for(k=0;k<b[i];k++)
       {
           printf(">+");
           for(j=1;j<=a[i]-2;j++)
           printf("-");
           printf("+>\n");
       }
       printf("\n");
       }
     


   }

   return 0;
}



2014-11-17 19:06
快速回复:hdu2550 求助哪里错了,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028739 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved