一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
数据范围:
进阶:空间复杂度 , 时间复杂度
进阶:空间复杂度 , 时间复杂度
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n=0; while (in.hasNextInt()) { // 注意 while 处理多个 case n = in.nextInt(); } if(n==1||n==2){ System.out.println(n); return; } int dp[]=new int[n+1]; dp[1]=1; dp[2]=2; for(int i=3;i<=n;i++){ for(int j=1;j<i;j++){ dp[i]+=dp[j]; } dp[i]+=1; } System.out.println(dp[n]); } }
public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[] dp = new int[n+2]; dp[0] = 0; dp[1] = 1; dp[2] = 2; for(int i = 3;i < dp.length;i++) { for(int j = 0;j < i;j++) { dp[i] = dp[i] + dp[j]; } //加上1到n的 dp[i] = dp[i] + 1; } System.out.println(dp[n]); }
import java.io.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int n = Integer.parseInt(s); int ans = 1 << (n-1); System.out.println(ans); } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case /*int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b);*/ int num = in.nextInt(); int arr[] = new int[num + 1]; if(num == 1){ System.out.println(num); return; } //等比数列 //f(n) = f(n-1) + f(n-2) + ....+1 //因为f(n-1) = f(n-2) + f(n-3) + ....+1 //所以f(n) = f(n-1) + f(n-1)=2f(n-1) System.out.println((int)Math.pow(2,num - 1)); } } }
while(n = +readline()){ console.log(add(n)); } function add(n){ if(n==0){ return 0; }else if(n ==1){ return 1 }else if(n==2){ return 2; }else{ return 2*add(n-1) } }
function skip(x) { if(x == 1) return 1 return 2 * skip(x - 1) } console.log(skip(readline()));
function skip(x) { let dp = Array(x + 1).fill(0); if (x == 1) return 1; if (x == 2) return 2; dp[0] = 1; dp[1] = 1; dp[2] = 2; for (let i = 3; i < x + 1; i++) { for (let j = 0; j < i; j++) { dp[i] += dp[j]; } } return dp[x]; } let n = parseInt(readline()); console.log(skip(n));
#include<iostream> #include<cmath> using namespace std; int main() { int n; cin>>n; int dp[20]{0}; dp[0]=1; dp[1]=1; dp[2]=2; for(int i=3;i<=n;i++) { for(int j=0;j<i;j++) { dp[i]=dp[i]+dp[j]; } } cout<<dp[n]; return 0; }