目录
1.添加逗号
2.跳台阶
3.扑克牌顺子
1.添加逗号
添加逗号_牛客题霸_牛客网
算法思路:
按照提议模拟即可,从后向前遍历字符串,遍历三个字符之后,将其插入将这三个字符插入到新的字符串中再加上逗号。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main()
{string s;cin >> s;int n = s.size();string ret;int cnt = 1;for(int i = n - 1; i >= 0; i--){ret += s[i];if(i != 0 && cnt == 3){cnt = 0;ret += ',';}cnt++;}reverse(ret.begin(), ret.end());cout << ret << endl;return 0;
}
// 64 位输出请用 printf("%lld")
2.跳台阶
跳台阶_牛客题霸_牛客网
算法思路:
动态规划的入门题
1.状态分析: dp[i] i级台阶的跳法
2.状态转移方程:以最后一步的状态推出状态转移方程,青蛙只能跳一步或者两步,所以到达i位置无非就是两种情况从i-1跳或者从i-2跳 dp[i] = dp[i -1] + dp[i - 2]。
#include <iostream>
using namespace std;// 1 2 3 4
// a b c
// a b c
int main()
{int n = 0; cin >> n;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)cout << n << endl;elsecout << c << endl;return 0;
}
// 64 位输出请用 printf("%lld")
3.扑克牌顺子
扑克牌顺子_牛客题霸_牛客网
算法思路:
这道题可以使用逆向思维,哪5张扑克牌不能组成顺子。
1.出现重复的牌,一定组不成顺子。
2.5张扑克,最大的牌 - 最小的牌 差值大于 4 也一定组不成顺子。
#include <functional>
class Solution {
public:
//2 0 0 4 6bool IsContinuous(vector<int>& numbers) {int Max = 0;int Min = 14;int n = numbers.size();bool hash[14] = {0};for(auto a : numbers){if(a != 0){if(hash[a]){return false;}hash[a] = true; Max = max(a, Max);Min = min(a,Min); }}return Max - Min <= 4;}
};