POJ1088 (婊戦洩)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ1088 (婊戦洩)相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/while' title='while'>while bool map memset 琛ㄧず color 瓒婄晫 鎺掑簭
璇曚簡涓€涓嬫繁鎼滄瘡涓妭鐐圭粨鏋淭LE浜?/p>
绐佺劧鍙戠幇鏄釜寰堟槑鏄剧殑DP
浠庢渶灏忕殑鑺傜偣寮€濮嬶紝鏇存柊瀹冨洓鍛ㄧ殑鑺傜偣锛屽鏋滃瓨鍦ㄦ瘮瀹冮珮搴﹂珮鐨勮妭鐐癸紝楂樼殑鑺傜偣姝ユ暟 + 1锛屽洜涓鸿妭鐐圭殑鏇存柊鐘舵€佽偗瀹氭槸姣斿畠楂樺害浣庨偅鑾峰彇鐨勶紝鍥犳鏇存柊鏃跺洓鍛ㄦ瘮瀹冧綆鐨勮妭鐐瑰凡缁忕‘瀹氫簡鏄渶澶ф鏁颁簡
// #include<iostream>//POJ 1088婊戦洩 // #include<cstdio>//娣辨悳璇曟瘡鏉¤矾寰? // #include<cstring> // #include<algorithm> // using namespace std; // const int maxn = 100 + 15;//鍦板浘 // bool vis[maxn][maxn];//鍒ゆ柇姣忎釜鑺傜偣鏄惁璁块棶杩? // int Map[maxn][maxn];//鍦板浘 // int maxLen = 0;//鏈€闀胯矾寰? // int arrx[] = 1,-1,0,0; // int arry[] = 0,0,1,-1; // int R,C;//R浠h〃琛屾暟,C浠h〃鍒楁暟 // void dfs(int x,int y,int len)//浠?pos(x,y)鍧愭爣寮€濮嬫悳绱?len涓哄綋鍓嶆鏁? // // maxLen = max(len,maxLen); // vis[x][y] = true;//琛ㄧず鍧愭爣宸茶闂繃 // int newx,newy;//鏂板潗鏍囩殑x,y浣嶇疆 // for(int i=0;i!=4;++i) // // newx = x + arrx[i]; // newy = y + arry[i];//鏂颁綅缃? // if(vis[newx][newy]) // continue; // if(newx<0||newx>=R||newy<0||newy>=C) // continue;//闃叉瓒婄晫 // if(Map[newx][newy] < Map[x][y]) // dfs(newx,newy,len+1); // vis[newx][newy] = false;//鍥炴函 // // // int main() // // while(cin>>R>>C) // // for(int i=0;i!=R;++i) // // for(int j=0;j!=C;++j) // cin>>Map[i][j];//杈撳叆鍦板浘 // // for(int i=0;i!=R;++i) // // for(int j=0;j!=C;++j) // //浠庢瘡涓偣寮€濮嬪皾璇? // memset(vis,false,sizeof(vis));//閲嶇疆璁块棶鍦板浘 // dfs(i,j,1); // // // cout<<maxLen<<endl; // // ////////////////鍔ㄨ(鍔ㄦ€佽鍒? #include<iostream> #include<cstdio> #include<vector> #include<algorithm> using namespace std;//缁忓吀DP int R,C;//R浠h〃琛?C浠h〃鍒?/span> const int maxn = 100 + 15; int Map[maxn][maxn];//鍦板浘(鍌ㄥ瓨姣忎釜鐐圭殑鍊? int cnt[maxn][maxn]; typedef struct int x,y;//x浠h〃琛?y浠h〃鍒?/span> int h;//楂樺害 node;//姣忎釜鑺傜偣浠h〃浣嶇疆 vector<node> v; bool cmp(const node& n1,const node& n2) return n1.h < n2.h; int arrx[] = 1,-1,0,0; int arry[] = 0,0,1,-1; int main()//鎴戜负浜轰汉DP while(cin>>R>>C) node tmp; for(int i=0;i!=R;++i) for(int j=0;j!=C;++j) cnt[i][j] = 1;//鍒濆鍖栨鏁颁负1 tmp.x = i; tmp.y = j; cin>>tmp.h; Map[i][j] = tmp.h; v.push_back(tmp); //浠庡皬鍒板ぇ鎺掑簭(h) sort(v.begin(),v.end(),cmp); for(int i=0;i!=R*C;++i)//瀵逛簬姣忎釜鑺傜偣 for(int j=0;j!=4;++j) int newx = v[i].x + arrx[j]; int newy = v[i].y + arry[j]; if(newx<0||newx>=R||newy<0||newy>=C) continue;//闃叉瓒婄晫 if(Map[newx][newy] > v[i].h) cnt[newx][newy] = max(cnt[newx][newy],cnt[v[i].x][v[i].y]+1); int maxlen = 0; for(int i=0;i!=R;++i) for(int j=0;j!=C;++j) maxlen = max(maxlen,cnt[i][j]); cout<<maxlen<<endl;
以上是关于POJ1088 (婊戦洩)的主要内容,如果未能解决你的问题,请参考以下文章