hdoj 2516 取石子游戏(斐波那契博弈)
Posted 浅忆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdoj 2516 取石子游戏(斐波那契博弈)相关的知识,希望对你有一定的参考价值。
参看Sample Output.
Fibonacci ‘s Game (斐波那契博弈)
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int n,fib[50]; 5 fib[0]=2;fib[1]=3;//这里fib[0]就写了2是因为题目给的n是大于等于2的,所以省略了1这个fib数 6 for(int i=2;i<50;i++) 7 fib[i]=fib[i-1]+fib[i-2]; 8 while(cin>>n&&n){ 9 int i,flag=1; 10 for(i=0;i<50;i++){ 11 if(fib[i]==n) flag=0,puts("Second win"); 12 if(fib[i]>n) break; 13 } 14 if(flag) puts("First win"); //处理完flag都没变,说明n不是Fibonacci数 15 } 16 return 0; 17 }
ps:摘录http://blog.csdn.net/wuff1988/article/details/9312559
puts()函数只用来输出字符串,没有格式控制,里面的参数可以直接是字符串或者是存放字符串的字符数组名。
printf()函数的输出格式很多,可以根据不同格式加转义字符,达到格式化输出。
puts()函数的作用与语句printf("%s\n",s);的作用形同。
例子:
①:
#include <stdio.h>
int main( void )
{
puts( "Hello world from puts!" ); //字符串,最后隐含带有‘\0‘字符
}
Output
Hello world from puts!
②:
main()
{
static char a[] = {‘H‘,‘I‘,‘!‘,‘!‘};
puts(a);
}
则输出 Hi!!烫烫烫烫烫烫烫dhaklhdwuhdaghdagdak... (后面都是乱码)
原因: a在结尾处缺少一个空字符(‘\0‘), 所以它不是一个串,这样, puts() 就不知道什么时候停止输出, 它将会把 a 后面内存单元中的内容都打印出, 直到它在什么地方碰到了一个空字符为止
以上是关于hdoj 2516 取石子游戏(斐波那契博弈)的主要内容,如果未能解决你的问题,请参考以下文章