小易准备去拜访他的朋友,他的家在0点,但是他的朋友的家在x点(x > 0),均在一条坐标轴上。小易每一次可以向前走1,2,3,4或者5步。问小易最少走多少次可以到达他的朋友的家。
import java.util.Scanner;
/**
* @Author: coderjjp
* @Date: 2020-05-08 16:24
* @Description:
* @version: 1.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println((int)Math.ceil(sc.nextInt()/5.0));
sc.close();
}
} import java.util.Scanner;
/**
* @Author: coderjjp
* @Date: 2020-05-08 16:24
* @Description:
* @version: 1.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int dp[] = new int[x+1];
for (int i = 1; i <= x; i++){
dp[i] = dp[i-1];
if (i >= 2) dp[i] = Math.min(dp[i], dp[i-2]);
if (i >= 3) dp[i] = Math.min(dp[i], dp[i-3]);
if (i >= 4) dp[i] = Math.min(dp[i], dp[i-4]);
if (i >= 5) dp[i] = Math.min(dp[i], dp[i-5]);
dp[i]++;
}
System.out.println(dp[x]);
sc.close();
}
} //可以理解为动态规划的题
import java.io.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ));
int n = Integer.parseInt(br.readLine());
if(n<=5){
System.out.println(1);
return;
}
int[] dp = new int[n+1];
for(int i = 0;i<=5;i++)
dp[i] =1;
//
for(int i = 6;i<=n;i++){
int min = Integer.MAX_VALUE;
for(int j = i-1;j>i-5-1;j--){
min = Math.min(dp[j],min);
}
dp[i] = 1+min;
}
System.out.println(dp[n]);
}
} 一看到跳台阶,就想用动态😂import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String x = scanner.nextLine();
int road = Integer.parseInt(x);
System.out.println(findRoad(road));
}
static int count = 0;
private static int findRoad(int road) {
if (road >= 5) {
count++;
return findRoad(road - 5);
} else if (road >= 4) {
count++;
return findRoad(road - 4);
} else if (road >= 3) {
count++;
return findRoad(road - 3);
} else if (road >= 2) {
count++;
return findRoad(road - 2);
} else if (road >= 1) {
count++;
return findRoad(road - 1);
}
return count;
}
}
这代码case通过率为20.00%
1.若小于5就为1
2.若大于5 看他有没有余数
有余数就x/5+1
没有余数就x/5
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int A1=sc.nextInt();
int s;
if(A1<=5){
s=1;
}else{
if(A1%5>0){
s=(A1/5)+1;
}else{
s=(A1/5);
}
}
System.out.println(s);
}
}别人更精简的答案
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int x = input.nextInt();
int m = x/5;
if (x%5 != 0)
m++;
System.out.println(m);
}
}
import java.util.*;
public class Main {
private static int walk(int n) {
//动态规划法,和换零钱相似
// 状态转移方程: dp[i] = min{dp[i], dp[i - walks[j]] + 1},walks[j] <= i
int[] dp = new int[n + 1];
Arrays.fill(dp, Integer.MAX_VALUE - 5);
for (int i = 1; i <= n && i <= 5; i++) {
dp[i] = 1;
}
//填充dp
for (int i = 6; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
if (i >= j) {
dp[i] = Math.min(dp[i], dp[i - j] + 1);
}
}
}
return dp[n];
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String param = input.nextLine();
int n = Integer.parseInt(param);
System.out.println(walk(n));
}
}