2 条题解

  • 2
    @ 2023-12-16 14:54:53

    =

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,i,j;
    int a[505][105],minn=INT_MAX,f[105][105];
    int main()
    {
      cin>>n>>m;
      for(i=1;i<=n;++i)
      for(j=1;j<=m;++j)
      cin>>a[i][j];
      for(i=1;i<=m;++i)
      f[1][i]=a[1][i];
      for(i=2;i<=n;++i)
      {
        for(j=1;j<=m;++j)
    	{
          if(j==1)f[i][j]=a[i][j]+f[i-1][j];
          else f[i][j]=a[i][j]+min(f[i-1][j],f[i][j-1]); 
    	}
        
        for(j=m-1;j>=1;--j)
        f[i][j]=min(f[i][j],f[i][j+1]+a[i][j]);
      }
      for(j=1;j<=m;++j)
      if(f[n][j]<minn)
      minn=f[n][j];
      cout<<minn;
      return 0;
    }
    
    • 0
      @ 2025-10-18 13:14:38
      #include <bits/stdc++.h>
      using namespace std;
      long long m,n,a[501][501],b[501][501],minn=INT_MAX;
      int main()
      {
      	cin>>m>>n;
      	for(int i=1;i<=m;i++)
      		for(int j=1;j<=n;j++)
      			cin>>a[i][j];
      	for(int i=1;i<=n;i++)
      		b[1][i]=a[1][i];
      	for(int i=2;i<=m;i++)
          {
      		for(int j=1;j<=n;j++)
              {
                  b[i][j]=b[i-1][j]+a[i][j];
      			if(j>1) b[i][j]=min(b[i][j],b[i][j-1]+a[i][j]);
              }
      		for(int j=n;j>=1;j--)
      			if(j<n) b[i][j]=min(b[i][j],b[i][j+1]+a[i][j]);
      	}
      	for(int i=1;i<=n;i++)minn=min(minn,b[m][i]);
      	cout<<minn;
      }
      
      • 1

      信息

      ID
      25
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      (无)
      递交数
      171
      已通过
      59
      上传者