堆瓷砖,代码哪里出错了?
堆瓷砖
Time Limit:1000MS Memory Limit:65536K
Total Submit:411 Accepted:231
Description
上次来定制的客户买走了不少瓷砖,确实给公司带来了不少利润,可是望着裁剪下来的瓷砖,陈盖历发愁了。这些尺寸不一的瓷砖堆的满地都是。哎,还是想个办法把他们堆成堆吧。当然堆的时候最大的要放在下面,绝对不允许大的瓷砖放在小的上面,否则变形了下次就不好卖了。你能帮忙把这些瓷砖堆起来吗?
Input
第一行输入一个整数n,表示共要堆成的堆数。
然后是n行,每行先输入1个整数m,表示这一堆有m块瓷砖,然后紧跟着输入m个整数,表示瓷砖的尺寸
Output
对于每一堆输出一行,分别是该堆的瓷砖尺寸,按照从大到小进行排列,2个数之间有一个空格
Sample Input
2
4 3 4 5 6
3 8 4 9
Sample Output
6 5 4 3
9 8 4
Hint
n m 不会超过50
我写的代码:
#include<stdio.h>
int main()
{
int n,m,a[50];
int i,j,p,q,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&m);
for(j=0;j<m;j++)
{
scanf("%d",&a[j]);
}
for(p=0;p<m;p++)
{
for(q=0;q<m-p;q++)
{
if(a[q]<a[q+1])
{
temp=a[q];
a[q]=a[q+1];
a[q+1]=temp;
}
}
}
for(j=0;j<m;j++)
{
printf("%d ",a[j]);
}
printf("\n");
}
return 0;
}
[解决办法]
提交是报什么错?
for(p=0;p<m;p++) { for(q=0;q<m-p-1;q++) //这里改成 m-p-1,如果不改P=0里,p+1会溢出。。 { if(a[q]<a[q+1]) { temp=a[q]; a[q]=a[q+1]; a[q+1]=temp; } } }