有谁能指点一下这道题C语言怎么读入吗

P1020 [NOIP1999 提高组] 导弹拦截

有谁能指点一下这道题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


|