sgu 168
来源:互联网 发布:前妻归来 总裁知错了 编辑:程序博客网 时间:2024/04/27 17:49
You are given N*M matrix A. You are to find such matrix B, that B[i,j]=min{ A[x,y] : (y>=j) and (x>=i+j-y) }
动态规划,枚举对角线,
因为是取最值,
所以取值区域可以重叠,
就可以得出递推式。
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctime>#include<iostream>#include<algorithm>const int MAXN = 1005;int n , m;int A[MAXN][MAXN] = {0};int B[MAXN][MAXN] = {0};using namespace std;int main(){#ifndef ONLINE_JUDGE freopen("sgu168.in","r",stdin); freopen("sgu168.out","w",stdout);#endif scanf("%d%d",&n,&m); for(int i = 1;i <=n; i++) for(int j = 1; j <= m; j++) { scanf("%d",&A[i][j]); B[i][j] = A[i][j]; } for(int L = n + m ; L > 1 ; L-- ) for(int j = min(m , L - 1),lmt = max(L - n ,1); j >= lmt ; j--) { int i = L - j;// B[i][j] = min(B[i-1][j+1] ,B[i+1][j]) if(i - 1 >0 && j + 1 <= m) B[i][j] = min(B[i][j],B[i-1][j+1]); if(i + 1 <= n) B[i][j] = min(B[i][j],B[i+1][j]); if(j < m) B[i][j] = min(B[i][j],B[i][j+1]); //1*2矩阵 } for(int i = 1;i <=n; i++) { for(int j = 1; j < m; j++) printf("%d ",B[i][j]); printf("%d\n",B[i][m]); }#ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout);#endif return 0; }
0 0
- SGU 168
- sgu 168
- sgu 168 Matrix
- SGU 168 Matrix DP
- sgu 168 Matrix DP
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- (SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- Negative and Positive (NP) HDU5183 && Bestcoder#32
- iOS本地数据存储的方式
- 常见主动学习算法
- MARYLAND/Software Security 摘要与感悟(3)
- 安卓蓝牙API(1)
- sgu 168
- Android基础笔记——JSONObject方式解析JSON数据
- 学习vi和vim编辑器(15):vim对vi的主要改进
- github for linux
- CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas以及汉字中文的显示
- 【codeforces】#99 E Mushroom Gnomes - 2
- DVWA平台之sql盲注学习
- 类加载、内省、注解、代理
- 分布式业务Redis安装与集群配置