NYOJ 171 聪明的kk (dp问题)
2012-08-22 11:37
295 查看
地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=171
思路:dp问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了
代码如下:
借鉴代码如下:
思路:dp问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了
代码如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> int i,j,N,M; int map[25][25],d[25][25]; int dp(int N,int M) { memset(d,0,sizeof(d)); for(i=0;i<N;i++) for(j=0;j<M;j++) if(d[i+1][j]>d[i][j+1]) //即(i,j)位置的下面一个位置(i+1,j)的虫子个数大于(i,j)位置的右面的一个位置(i,j+1) d[i+1][j+1]=d[i+1][j]+map[i+1][j+1]; //这点不太懂。。。 else d[i+1][j+1]=d[i][j+1]+map[i+1][j+1]; return d [M] ; } int main() { scanf("%d%d",&N,&M); for(i=1;i<=N;i++) for(j=1;j<=M;j++) scanf("%d",&map[i][j]); printf("%d\n",dp(N,M)); system("pause"); return 0; }
借鉴代码如下:
#include<iostream> #include<cstring> using namespace std; int dp[25][25]; int main() { int i,j,m,n; cin>>m>>n; memset(dp,0,sizeof(dp)); for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { cin>>dp[i][j]; } } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { dp[i][j]=dp[i][j]+max(dp[i-1][j],dp[i][j-1]);//这点表示不太懂,正在研究。。。 } } cout<<dp[m] <<endl; system("pause"); return 0; }
相关文章推荐
- NYOJ-171 第三届河南省ACM竞赛 聪明的KK (简单的DP)
- NYOJ题目171-聪明的kk(dp)
- nyoj171聪明的KK(dp动态规划)
- nyoj 171 聪明的kk【二维dp&&求最大值】
- NYOJ 171 聪明的kk(基础dp)
- NYOJ-171-聪明的kk(第三届河南省程序设计大赛D题(简单dp))
- NYOJ 171 聪明的kk(数塔问题)
- NYOJ-171 聪明的kk
- NYOJ 171聪明的kk
- NYOJ-171(动态规划)-题目----------------------------- 聪明的kk
- nyoj 171 聪明的kk(数塔演变)
- NYOJ 聪明的kk 171
- NYOJ171-聪明的kk
- NYOJ 题目171 聪明的kk
- NYOJ 171 聪明的kk
- nyoj-171 聪明的kk
- nyoj 171 聪明的kk
- nyoj 171 聪明的kk 【树塔变形】
- NYOJ171 聪明的kk
- NYOJ 题目171 聪明的kk