#include<bits/stdc++:h>
using namespace std;
int b[100][100];
int f(int m,int n){
i£(m<=0 lln<=0)
return O;
a[o][o]-b[o][0];
for(int i-1;i<n;i++)a[0][i]-a[0][i-1]+b[0][i];
for(int i-1;
i<m;i++)a[i][0]-a[i-1][0]+b[í][0];
for(int iml;i<m;i++){
for(int j=l;j<n;j++){
a[i][j]=min(a[i-1][j],a[i][j-1])+b[i][j];
return a[m-1][n-1];
int main(){int m,n;
cin>>m>>n;
for(int i=0;
i<m;i++){
for(int j=0;j<n;j++){cin>>b[ i][j];
cout<<f(m,n);
return 0;
上述代码实现了对一个长度为mxn的二维数组寻找每一行上的最小值进1和。
上述代码如果删除第4行,其他地方的b数组都改成a数组,那么结果不变
若输人数据为:
4 4
1 2 3 45 6 7 8 9 10 11 12 13 14 15 16则输出的结果为
28
16
136
46
上述代码的时间复杂度为(
O(min(m,n))
O(2nm+m+n)
O(nm)
O(2nm)
我们将上述算法称为
深度搜索
广度搜索
动态规划
贪心
上述代码若剽除第4行,其能地方的b数组都改成a数组,输入数据为:
33
123456789
则输出的结果为()。
20
12
11
21
发表评论