您的位置:首页 > 编程语言 > C语言/C++

厦大C语言上机 1394 抛硬币

2018-01-08 16:33 232 查看
1394.抛硬币

时间限制: 1000 MS          内存限制: 65536 K

        

提交数: 387 (0 users)          通过数: 258 (254 users)

问题描述

其实,小明有一个小秘密,那就是暗恋计算机系的一个女生很久了。但是又不知道那个女生是怎么想的。3.7女生节就要到了,小明一直在纠结要不要跟那个女生表白。思来想去没有结果。于是乎他觉得采用最原始的办法——抛硬币来决定。正面表白,反面继续沉默观望。不过就像《爱情公寓3》结尾曾小贤说的那样“当面对两个选择时,抛硬币总能奏效,并不是因为它总能给出对的答案,而是在你把它抛在空中的那一秒里,你突然知道你希望它是什么!”呃呃呃,扯远了,其实当硬币还停留在空中的时候,小明想知道的却是:如果我连续抛N次,那么不连续出现正面的可能情况有多少种(即任何相邻两次都不全是正面)?哎,也许这就是作为工科生的思维吧!

输入格式

输入只有一行一个整数N,表示抛N次硬币。(N<=15)

输出格式

输出只有一行,表示不连续出现正面的可能情况的种数。

样例输入

4

样例输出

8

来源
xmu

提示

有 16 种可能,1 表示正面,可行的有 0000,0001,0010,0100,0101,1000,1001,1010,共 8 种。

#include <stdio.h>

int main()
{
int a[20] = { 0 };
int n;
int i;

scanf("%d", &n);

// a[i] => a[i-2] if a[i] == 1
//      => a[i-1] if a[i] == 0
// a[i] = a[i-2] + a[i-1]
// initial: a[1] = 2, a[2] = 3
a[1] = 2;
a[2] = 3;
for (i = 3; i <= n; ++i)
a[i] = a[i - 1] + a[i - 2];

printf("%d\n", a
);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: