GDUFE ACM-1033

题目:http://acm.gdufe.edu.cn/Problem/read/id/1033

造箭➹

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

  一年一度的GDCC校运会即将隆重开幕!今年新增了一项射箭大赛,好酷~你也想参加了,不过组委会不提供弓箭╯﹏╰那就只好选手自己带了。现在来锻造弓箭,包括箭身的长度l,不同长度的弓箭所需要的数目n,要求你把需要的弓箭都输出.弓箭的基本样子为 ">+---+>",其中"+---+"为箭身,数据保证箭身长度 > 2。好了,工欲善其事必先利其器,造箭啦!!

Input:

首先输入一个数t,表示有t组数据,
每组数据先有一个m(m<50),接下去有m行,
第i行两个整数l,n,分别代表箭身长度为l的弓箭有n支,(l< 30 , n< 10 )
输入数据保证每个l>2且都不同

Output:

按照箭身的长度从小到大的顺序依次输出所有需要的弓箭,每种规格的弓箭后面有一空行。

Sample Input:

1
3
2 3
8 2
4 5

Sample Output:

>++>
>++>
>++>

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

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

思路:先排序,然后输出>+,再输出l-2个-,再输出+>循环n次

难度:看着思路就觉得简单。。。

代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int t,l[50],n[50],a,b,c,i,j,k;
 5     while(~scanf("%d",&t))
 6     {
 7         while(t--)
 8         {
 9             scanf("%d",&k);
10             scanf("%d %d",&l[0],&n[0]);
11             for(i=1;i<k;i++)
12             {
13                 scanf("%d %d",&l[i],&n[i]);
14                 for(j=i;j>0;j--)
15                     {if(l[j]>l[j-1])break;
16                 a=l[j];l[j]=l[j-1];l[j-1]=a;
17                 a=n[j];n[j]=n[j-1];n[j-1]=a;}
18             }
19                 for(i=0;i<k;i++)
20                 {
21                     for(j=0;j<n[i];j++)
22                     {
23                         printf(">+");
24                         for(c=2;c<l[i];c++)
25                             printf("-");
26                         printf("+>
");
27                     }
28                     printf("
");
29                 }
30         }
31     }
32     return 0;
33 }
原文地址:https://www.cnblogs.com/ruo786828164/p/6006363.html