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> using namespace std; int maxcount=0; int n,m,a[105][105]={0}; bool flag[105][105]={false}; int minpath[105][105]={0}; struct point { int x,y,num; }; point findmin() { point min; min.num =100001; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(!flag[i][j]&&min.num >a[i][j]) { min.num =a[i][j]; min.x =i; min.y =j; } } } flag[min.x][min.y]=true; return min; } void solve() { point min; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { min=findmin(); minpath[min.x][min.y]=0; if(a[min.x][min.y]>a[min.x-1][min.y]&& flag[min.x-1][min.y]&& minpath[min.x][min.y]<=minpath[min.x-1][min.y]) { minpath[min.x][min.y]=minpath[min.x-1][min.y]+1; } if(a[min.x][min.y]>a[min.x][min.y+1]&& flag[min.x][min.y+1]&& minpath[min.x][min.y]<=minpath[min.x][min.y+1]) { minpath[min.x][min.y]=minpath[min.x][min.y+1]+1; } if(a[min.x][min.y]>a[min.x+1][min.y]&& flag[min.x+1][min.y]&& minpath[min.x][min.y]<=minpath[min.x+1][min.y]) { minpath[min.x][min.y]=minpath[min.x+1][min.y]+1; } if(a[min.x][min.y]>a[min.x][min.y-1]&& flag[min.x][min.y-1]&& minpath[min.x][min.y]<=minpath[min.x][min.y-1]) { minpath[min.x][min.y]=minpath[min.x][min.y-1]+1; } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; flag[i][j]=false; } } for(int i=0;i<=n+1;i++) { flag[i][0]=true; flag[i][m+1]=true; } for(int i=0;i<=m+1;i++) { flag[0][i]=true; flag[n+1][i]=true; } solve(); int maxp=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(maxp<minpath[i][j]) maxp=minpath[i][j]; } cout<<endl; } cout<<maxp<<endl; return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator