参考优快云博主码代码的猿猿 http://blog.youkuaiyun.com/ck_boss/article/details/17042451Description | ||
题目描述给你n个方格,m种颜色,要求相邻格和首尾格的颜色不同,请问有多少种不同的填涂方法。 输入每行输出两个整数n和m,1≤n,m≤1,000。 输出每行输出一个样例的结果,由于可能会很大,最后结果对1000003取模。 样例输入1 1 1 2 3 2 1000 10
样例输出1
2
0
566585
主要思路: n=1时:m
这题学到的东西很多: 1、memset 可用来 初始化数组,但在C primer plus 上没有找到,改天找到了再补充。2行和11行有或没有都能运行,我用11行是是用来初始化数组的,但是c语言群里的人说memset本来就是快速格式化 , 定义的全局数组本来就是0,快速格式化也是为了保险起见 。其实我并没有懂,快速格式化的memset用法和初始化是否相同?百度上memset用法写得太杂了。 请教大鹏得知,memset在这题中就是初始化数组的,如果不写也可以,因为数组本来就可以不初始化。这个语句把数组全部设置为0,如果不写,那么调用的时候给多少赋值就返回多少。 2、#define MOD 3000 宏定义常量。 3、 long long int F[3000]; 刚开始和头文件写在一起没有空行,忘记加分号。 4、EOF代表的值表示检测到文件结尾,例如,将getchar()的返回值于EOF比较。如果不相同,则还没有到达文件结尾,表达式为while((ch=getchar())!= EOF)(C primer plus p190) 5、此题运用的递归相较最大公约数,更清晰地体现了递归的思想,先算出F[1],F[2],F[3],然后才开始算后面的。
6、调用memset函数就需要在头文件中加上string.h。 |
Color 递归
最新推荐文章于 2021-10-24 22:16:46 发布