首页 > 用户发贴区 > 编程问题提问区 > 新手求教一个问题,感激不尽
2007
11-21

新手求教一个问题,感激不尽

在做合唱队形的算法问题,要求是输入多组数据。程序如下


 


#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


了,请高手帮忙看看,感激不尽


新手求教一个问题,感激不尽》有 1 条评论

  1. dxsqj 说:

    这个算法我不懂,但程序中p没有初始化,而q虽定义了,没使用.

留下一个回复