有谁能指点一下这道题C语言怎么读入吗
by hong123 @ 2017-11-25 15:19:04
```cpp
while (scanf("%d", &a[++m]) != EOF)
continue;
m--;
```
我是这么做的
by 权御天下 @ 2017-11-25 15:23:06
@[hong123](/space/show?uid=71267) 您可以试试
by 权御天下 @ 2017-11-25 15:23:34
@[权御天下](/space/show?uid=59082) #include<stdio.h>
```cpp
int main()
{
int max=0,min=0,i,j,a[20],f[20],c,n=0,p=1;
//while((c=getchar())&&(c!='\n'))a[++n]=c;
/*while(p)
{
c=getchar();
if(c!='\n')a[++n]=c;
else p=0;
}*/
while(scanf("%d",&a[++n])!=EOF)continue;
n--;
for(i=1;i<=n;i++)
{
f[i]=1;
for(j=i;j>0;j--)if((a[i]<=a[j])&&(f[i]<f[j]+1))f[i]=f[j]+1;
if(f[i]>max)max=f[i];
}
for(i=1;i<=n;i++)
{
f[i]=1;
for(j=i;j>0;j--)if((a[i]>a[j])&&(f[i]<f[j]+1))f[i]=f[j]+1;
if(min<f[i])min=f[i];
}
printf("%d\n",max);
printf("%d\n",min);
}我的程序这样好像还是不可以
```
by hong123 @ 2017-11-25 16:13:45
那可能是您算法有问题?
```cpp
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define maxn 100860
int a[maxn], f[maxn], b, m, n, mm, ans1, ans2;
int main()
{
while (scanf("%d", &a[++m]) != EOF)
continue;
m--;
f[0] = 1234123412;
for (int i = 1; i <= m; i++)
{
if (f[ans1] >= a[i])
{
f[ans1 + 1] = a[i];
ans1++;
}
else
{
n = 0;
b = ans1;
while (n<b)
{
mm = (n + b) / 2;
if (f[mm] >= a[i])
n = mm + 1;
else
b = mm;
}
if (n != 0)
f[n] = a[i];
}
}
cout << ans1 << endl;
memset(f, -1, sizeof(f));
for (int i = 1; i <= m; i++)
{
if (f[ans2]<a[i])
{
f[ans2 + 1] = a[i];
ans2++;
}
else
{
n = 0;
b = ans2;
while (n<b)
{
mm = (n + b) / 2;
if (f[mm] >= a[i])
b = mm;
else
n = mm + 1;
}
f[n] = a[i];
}
}
cout << ans2 << endl;
return 0;
}
```
这个您可以参考一下
另外您以后可以多使用lg的在线IDE方便查错
by 权御天下 @ 2017-11-25 20:59:13
@[权御天下](/space/show?uid=59082) 先不考虑算法的问题,我的程序读入结束不了
by hong123 @ 2017-11-26 21:40:53
@[hong123](/space/show?uid=71267) 我在IDE里测过您的代码,是可以出结果的,但是输出有错误
by 权御天下 @ 2017-11-26 21:53:41
@[权御天下](/space/show?uid=59082) 那为什么我在vc6.0里程序读入结束不了
by hong123 @ 2017-11-26 22:19:53
@[hong123](/space/show?uid=71267) 不太清楚,不过lg的IDE是可以的
by 权御天下 @ 2017-11-26 22:23:08