60分求助,悬三关
  • 板块P1130 红牌
  • 楼主Foraver
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/4/13 15:08
  • 上次更新2024/4/13 16:37:18
查看原帖
60分求助,悬三关
1002361
Foraver楼主2024/4/13 15:08
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1005][1005],dp[1005][1005],ans=1e8;
int dfs(int x,int y)
{
	if(x>n)return 0;
	if(dp[x][y]!=-1)return dp[x][y];
	if(y==m)return dp[x][y]=min(dfs(x+1,y)+a[y][x],dfs(x+1,1)+a[y][x]);
	else return dp[x][y]=min(dfs(x+1,y)+a[y][x],dfs(x+1,y+1)+a[y][x]);
}
int main()
{
    scanf("%d%d",&n,&m);
    memset(dp,-1,sizeof(dp));
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=1;i<=m;i++)ans=min(ans,dfs(1,i));
	printf("%d",ans);
    return 0;
}
2024/4/13 15:08
加载中...