1
编写一个能够输出 Hello,World!
的程序。
提示:
- 使用英文标点符号;
Hello,World!
逗号后面没有空格。H
和W
为大写字母。
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
无
输出 #1复制
Hello,World!
这个不会写没啥讲的自裁吧,程序员的开始,一切罪恶的起点!!!!!
毁灭吧
2台阶问题
有 N 级台阶,你一开始在底部,每次可以向上迈 1∼K 级台阶,问到达第 N 级台阶有多少种不同方式。
输入格式
两个正整数 N,K。
输出格式
一个正整数 ans(mod100003),为到达第 N 级台阶的不同方式数。
输入输出样例
输入 #1复制
5 2
输出 #1复制
8
说明/提示
- 对于 20%20% 的数据,1≤N≤10,1≤K≤3;
- 对于 40%40% 的数据, 1≤N≤1000;
- 对于 100%100% 的数据,1≤N≤100000,1≤K≤100。
题目大意肯定是非常容易理解的
1...反向推导->首先我们想要求得到第n阶,
我们可以枚举他的最后一步往前看
可以得到ans[n]= ans[n-1]+ans[n-2]........ (从1到k) 但是k不能超过第n阶
不断的传下去最后一定会归于 ans[1]一个台阶需要几步
2...正向推导->首先我们想到一个台阶需要几步
一步(显然)
两个台阶嘞
有两种情况 1一步一步走两步 2一次走两步(前提是可以一次两步)
三个台阶嘞 只考虑最后一步 可以一步那就是加上ans[2],两步加上ans[1],三步加上ans[0]
有此完全可以看出我们只要枚举最后一步即可(其实与上面一样)
不断的往后退推到最后的未知数只有ans[0]和ans[1]很显然这两个我们知道
都为一
写法有两种可以递归(dfs)记忆化
也可以迭代(动态规划)
思路其实都一样
1递归(dfs)记忆化
#include <cstdio>
#include <cctype>
#include <vector>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int kk[100000] &