Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
以下是代码,求测试数据、、、#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; struct SK { bool flag; int c; int h; }s[103][103]; int a[10003]; int dir[4][2]={-1,0,1,0,0,-1,0,1}; int main() { // freopen("in.txt","r",stdin); int i,j,r,c,f,x,y,l,max,m; bool flag; while(scanf("%d%d",&r,&c)!=EOF) { memset(s,0,sizeof(s)); memset(a,0,sizeof(a)); for(i=1;i<=r;i++) for(j=1;j<=c;j++) { scanf("%d",&s[i][j].h); s[i][j].c=1; a[s[i][j].h]++; } m=0; for(f=10000;f>=0;f--)//这里开始时(f>0),少了个=号,所以错了! { while(a[f]--) { flag=1; for(i=1;i<=r&&flag;i++) for(j=1;j<=c&&flag;j++) if(!s[i][j].flag&&s[i][j].h==f) {flag=0;x=i;y=j;break;} s[x][y].flag=1; max=0; for(l=0;l<4;l++) { i=x+dir[l][0]; j=y+dir[l][1]; if(s[i][j].h<=s[x][y].h) continue; if(s[i][j].c>max) max=s[i][j].c; } s[x][y].c+=max; if(s[x][y].c>m) m=s[x][y].c; } } printf("%d\n",m); } return 0; } 我自己发现问题了、、少了一个=号,这样会把h=0给漏掉、 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator