目录
添加逗号(模拟)
题目解析
讲解算法原理
编写代码
跳台阶(动态规划)
题目解析
讲解算法原理
编写代码
添加逗号(模拟)
题目解析
1.题目链接:添加逗号_牛客题霸_牛客网
2.题目描述
描述
对于一个较大的整数 N(1<=N<=2,000,000,000)
比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。
因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情
输入描述:
一行一个整数 N
输出描述:
一行一个字符串表示添加完逗号的结果
示例1
输入:
980364535
输出:
980,364,535
备注:
1≤n≤2,000,000,000
讲解算法原理
解法:
算法思路:
可以从后往前遍历这个数,每提取三个数字的时候,加⼀个逗号。最后处理⼀下边界情况即可。
编写代码
c++算法代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;cin >> s;string ret;int n = s.size();for(int i = 0; i < n; i++){ret += s[i];if((n - i - 1) % 3 == 0 && i != n - 1) ret += ',';}cout << ret << endl;return 0;
}
java算法代码:
import java.util.Scanner;
import java.io.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static void main(String[] args) throws Exception{BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));String s = br.readLine();int n = s.length();for(int i = 0; i < n; i++){System.out.print(s.charAt(i));if((n - i - 1) % 3 == 0 && i != n - 1){System.out.print(',');}}}
}
跳台阶(动态规划)
题目解析
1.题目链接:跳台阶_牛客题霸_牛客网
2.题目描述
描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:0 \leq n \leq 400≤n≤40
要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)
输入描述:
本题输入仅一行,即一个整数 n
输出描述:
输出跳上 n 级台阶有多少种跳法
示例1
输入:
2
输出:
2
说明:
青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2
示例2
输入:
7
输出:
21
讲解算法原理
解法:
算法思路:
最⼊⻔的动态规划问题,不必多说......
编写代码
c++算法代码:
#include <iostream>
using namespace std;
int main()
{int n;cin >> n;int a = 1, b = 1, c;for(int i = 2; i <= n; i++){c = a + b;a = b;b = c;}if(n == 0 || n == 1) cout << n << endl;else cout << c << endl;return 0;
}
java算法代码:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main
{public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int a = 1, b = 1, c = 0;for(int i = 2; i <= n; i++){c = a + b;a = b;b = c;}if(n == 0 || n == 1){System.out.println(n);}else{System.out.println(c);}}
}