题目: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("+>\n"); 27 } 28 printf("\n"); 29 } 30 } 31 } 32 return 0; 33 }