CMB2. 小招喵跑步
描述
小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是:输入描述
小招喵想去的位置x输出描述
小招喵最少需要的步数示例1
输入:
3
输出:
3
C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-07-27
#include <stdio.h> int main(void) { int path,n; scanf("%d",&n); if(n<0) n=-n; for(path=0;n;path++) { if(n%2==0) n/=2; else if(n>3&&((n+1)/2)%2==0) n++; else n--; } printf("%d",path); return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2019-05-26
#include "stdio.h" #define N 1024 #define MIN(x,y) ((x)<(y) ? (x):(y)) int get(int n){ if(n<4) return n; if(n%2==0){ return 1+get(n/2); }else{ int a = 1+get(n+1); int b = 1+get(n-1); return MIN(a,b); } } int main(){ int n; int val[N]; while(scanf("%d", &n) != EOF){ if(n<0) n=-n; printf("%d\n", get(n)); } }
C 解法, 执行用时: 1ms, 内存消耗: 380KB, 提交时间: 2018-08-31
#include "stdio.h" #define N 1024 #define MIN(x,y) ((x)<(y) ? (x):(y)) int get(int n){ if(n<4) return n; if(n%2==0){ return 1+get(n/2); }else{ int a = 1+get(n+1); int b = 1+get(n-1); return MIN(a,b); } } int main(){ int n; int val[N]; while(scanf("%d", &n) != EOF){ if(n<0) n=-n; printf("%d\n", get(n)); } }
C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-06-09
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int ret(int n) { if(n<0){ return ret(-n); } if(n==0){ return 0; } if (n == 1) { return 1; } if (n % 2 == 0) { return 1 + ret(n / 2); } if (n % 2 == 1) { return fmin((1 + ret(n - 1)),(2+ret((n+1)/2))); } return 0; } int main() { int n = 0; scanf("%d", &n); printf("%d", ret(n)); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2020-08-05
#include <stdio.h> int main(void) { int path,n; scanf("%d",&n); if(n<0) n=-n; for(path=0;n;path++) { if(n%2==0) n/=2; else if(n>3&&((n+1)/2)%2==0) n++; else n--; } printf("%d",path); return 0; }