自行車維修記:矩陣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次調(diào)用有結(jié)果,sum=%d\n",number, sum);
? ? return sum;
}
int main(int argc, const char * argv[]) {
? ? getMaxSum(0,0,2,2);
?? ?
? ? return 0;
}