在做合唱队形的算法问题,要求是输入多组数据。程序如下
#include<stdio.h>
int p;
int main()
{
int students,max=0;
int i,j,k,l,q=0;
int a[100],b[100],c[100],tmp[1000];
for(k=0;k<100;k++){
//以下是网上找的代码
scanf(“%d”,&students);
if(students==0)
break;
for(i=0;i<students;i++)
scanf(“%d”,&a[i]);
for(i=0;i<students;i++)
{
b[i]=1;
for(j=0;j<i;j++)
if(a[j]<a[i]&&b[j]+1>b[i])
b[i]=b[j]+1;
}
for(i=students-1;i>=0;i–)
{
c[i]=1;
for(j=i+1;j<students;j++)
if(a[j]<a[i]&&c[j]+1>c[i])
c[i]=c[j]+1;
}
for(i=0;i<students;i++)
if(c[i]+b[i]>max)
max=c[i]+b[i];
//以上是网上找的代码
tmp[p]=students-max+1;
++p;
}
for(l=0;l<p;l++)
printf(“%d\n”,tmp[l]);
}
其中具体实现部分是在网上找的代码,多组数据输入是自己编的,但是出现一个问题,就是比如输入
3
150 130 140
4
130 150 200 180
时结果正确,输出结果
1
0
但是反过来输入
4
130 150 200 180
3
150 130 140
结果就变成
0
-1
了,请高手帮忙看看,感激不尽
>> 本文固定链接: http://www.vcgood.com/archives/1938
这个算法我不懂,但程序中p没有初始化,而q虽定义了,没使用.