KS19. 最小代价爬楼梯
描述
输入描述
输入为一串半角逗号分割的整数,对应cost数组,例如输出描述
输出一个整数,表示花费的最小代价示例1
输入:
1,100,1,1,1,100,1,1,100,1
输出:
6
C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-01
#include<stdio.h> int main() { int cost[1000]; int N=0; while(scanf("%d",&cost[N])!=EOF) { N++; if(getchar()=='\n')break; } int sum=0; for(int i=N-1;i>=0;i--) { if(i-1>=0&&cost[i]<cost[i-1]){ sum+=cost[i]; }else{ sum+=cost[i-1]; i=i-1; } } printf("%d\n",sum); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-20
#include<stdio.h> int cost[10000]; int f[10000]; main() { int N,i,m,t,k; N=0; while(1) { scanf("%d",&cost[N++]); if(getchar()!=',') break; } f[0]=cost[0]; f[1]=cost[1]; for (int i=2;i<N;i++) { if(f[i-1]<f[i-2]) t=f[i-1]; else t=f[i-2]; f[i]=cost[i]+t; } k= (f[N-1]<f[N-2])?f[N-1]:f[N-2]; printf("%d",k); }