题目:
C++代码:
#include<iostream>
#include<string>
using namespace std;
int main(){
//t组数据,每组一个N代表有N种弓箭,箭身长度为ai的有bi支,i,j为循环变量
int t,N,ai,bi,i,j;
cin>>t;
while(t--){
//存储要打印的箭(小于50种弓箭,每种弓箭小于10支)
string arrow[500];
cin>>N;
//记录数组下标
int m=0;
string temp;
//遍历每种弓箭
while(N--){
cin>>ai;
cin>>bi;
//输出bi次
for(i=0;i<bi;i++){
temp="";
temp+=">+";
for(j=0;j<ai-2;j++){
temp+="-";
}
temp+="+>";
arrow[m]=temp;
m++;
}
}
//冒泡排序
for(i=0;i<m-1;i++){
for(j=0;j<m-i-1;j++){
if(arrow[j]>arrow[j+1]){
temp=arrow[j];
arrow[j]=arrow[j+1];
arrow[j+1]=temp;
}
}
}
//按照箭身(ai)的长度从小到大的顺序依次输出所有需要的弓箭
for(i=0;i<m;i++){
cout<<arrow[i]<<endl;
//输出空行
if(i!=m-1&&arrow[i]!=arrow[i+1] || i==m-1){
cout<<endl;
}
}
}
return 0;
}
运行结果: