自行车维修记:矩阵2点距离代码
在自行车旅途中,需要计算2点之间最短距离。下面就是算法。
//
// main.c
// arraydigui
//
// Created by lc2019 on 2023/1/7.
//
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
static int number=0;
int a[3][3]={{2,3,0},{1,2,3},{1,0,2}};
//int a[3][3]={{2,3,0},{1,2,3}};
int getMaxSum(int sx,int sy, int tx, int ty){
int sum1=0;
int sum2=0;
int sum=0;
if(sx==tx && sy== ty ){
sum = a[tx][ty];
}else if (sx==tx && sy+1 ==ty ){
sum = a[sx][sy]+a[tx][ty];
}else if( sx+1==tx && sy==ty ){
sum = a[sx][sy]+a[tx][ty];
}
else {
if(sy+1>ty){
printf("sy+1=%d\n",sy+1);
}else{
sum1=a[sx][sy]+getMaxSum(sx,sy+1,tx,ty);
}
if(sx+1>tx){
printf("sx+1=%d\n",sx+1);
}else{
sum2=a[sx][sy]+getMaxSum(sx+1,sy,tx,ty);
}
sum = (sum1>sum2)?sum1:sum2;
}
number++;
printf("第%d次调用有结果,sum=%d\n",number, sum);
return sum;
}
int main(int argc, const char * argv[]) {
getMaxSum(0,0,2,2);
return 0;
}