hdu 5902 Seam Carving
2024-09-09 05:13:35
水题,直接上代码了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#define maxn
#define INF 1000000000
using namespace std;
int t,m,n;
int dp[][],fa[][],num[][];
void print(int x,int y)
{
if(x==)
{
printf("%d ",y);
return ;
} print(x-,fa[x][y]);
if(x==m)
printf("%d",y);
else
printf("%d ",y);
}
int main()
{
scanf("%d",&t);
for(int ii=;ii<=t;ii++)
{
scanf("%d %d",&m,&n);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
scanf("%d",&num[i][j]);
for(int i=;i<=m+;i++)
for(int j=;j<=n+;j++)
dp[i][j]=INF;
for(int j=;j<=n;j++)
dp[][j]=num[][j],fa[][j]=j;
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
for(int k=;k>=-;k--)
{
if(dp[i][j]>num[i][j]+dp[i-][j+k])
{
dp[i][j]=num[i][j]+dp[i-][j+k];
fa[i][j]=j+k;
}
} //printf("%d ",dp[i][j]);
}
} int ans_max=INF;
int flag;
for(int j=n;j>=;j--)
{ if(dp[m][j]<ans_max)
{
ans_max=dp[m][j];
flag=j;
}
}
printf("Case %d\n",ii);
print(m,flag);
printf("\n");
}
return ;
}
最新文章
- 对C语言的知识与能力予以自评
- JavaScript的一些知识碎片(1)
- 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
- MacOS 10.8更新SVN到1.8.4的问题和解决方法
- PHP获取某年第几周的开始日期和结束日期
- Shell学习笔记 - Shell变量
- poj 3250 Bad Hair Day【栈】
- Android 从相冊获取近期拍摄的多张照片(获取相机拍照所存储的照片)
- 在PHP中连接数据库的八大步骤
- Wireshark使用drcom_2011.lua插件协助分析drcom协议
- PHP判断是手机端还是PC端
- 【hihoCoder 1419】重复旋律4
- 数据库优化案例——————某知名零售企业ERP系统
- 初识nginx反向代理和缓存机制
- UVaLive 3357 Pinary (Fib数列+递归)
- bzoj 2150 最小路径覆盖
- Windows Server上iSCSI的Best Practices
- Java中将InputStream读取为String, 各种方法的性能对比
- 变换CALayer锚点实现模拟时钟的动画
- JDBC(5)ResSetMetaData&;DatabaseMetaData&;获取数据库主键的值