1. 程式人生 > >第六次測試 A B C

第六次測試 A B C

A.

有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請程式設計計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
其中,蜂房的結構如下所示。
在這裡插入圖片描述
Input
輸入資料的第一行是一個整數N,表示測試例項的個數,然後是N 行資料,每行包含兩個整數a和b(0<a<b<50)。
Output
對於每個測試例項,請輸出蜜蜂從蜂房a爬到蜂房b的可能路線數,每個例項的輸出佔一行。
Sample Input
2
1 2
3 6
Sample Output
1
3

第一題一眼看上去有點蒙圈,但是多排列幾個數值後你會發現它非常眼熟,(那啥那啥波數列)
於是熟練的敲程式碼,ctrlA ctrlC ctrlV,嗯,等著轉圈,wa。、
WTF???
秉持著ak爺的大力出奇跡,改了改無關緊要的地方繼續提交,emmmmmmm,WA。
哪錯了?還是老毛病,爆int了

#include<stdio.h>
int main ()
{
	long long s[100];
	int a,b;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&a,&b);
		int t=b-a;
		
		s[1]=1;
		s[2]=2;
		for(int i=3;i<=t;i++)
		{
			s[i]=s[i-1]+s[i-2];
		}
	    
		printf("%lld\n",s[t]);
		
	}
	return 0;
 }

把盛放計算結果的陣列改成long long就可以了,於是你發現C題是多麼簡單。
C.
在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:
在這裡插入圖片描述


Input
輸入資料由多行組成,每行包含一個整數n,表示該測試例項的長方形方格的規格是2×n (0<n<=50)。
Output
對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。
Sample Input
1
3
2
Sample Output
1
3
2

直接貼程式碼

#include<stdio.h>
int main ()
{
	int n;
	long long a[100];
	while(~scanf("%d",&n))
	{
		a[1]=1;
		a[2]=2;
		for(int i=3;i<=n;i++)
		{
			a[i]=a[i-1]+a[i-2];
		}
		printf("%lld\n",a[n]);
	}
	return 0;
 } 

水題說完了接下來就要瘋狂吐槽了
B.
人稱“AC女之殺手”的超級偶像LELE最近忽然玩起了深沉,這可急壞了眾多“Cole”(LELE的粉絲,即"可樂"),經過多方打探,某資深Cole終於知道了原因,原來,LELE最近研究起了著名的RPG難題:

有排成一行的n個方格,用紅(Red)、粉(Pink)、綠(Green)三色塗每個格子,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.求全部的滿足要求的塗法.

以上就是著名的RPG難題.

如果你是Cole,我想你一定會想盡辦法幫助LELE解決這個問題的;如果不是,看在眾多漂亮的痛不欲生的Cole女的面子上,你也不會袖手旁觀吧?

Input
輸入資料包含多個測試例項,每個測試例項佔一行,由一個整數N組成,(0<n<=50)。
Output
對於每個測試例項,請輸出全部的滿足要求的塗法,每個例項的輸出佔一行。
Sample Input
1
2
Sample Output
3
6

這道題還真是槽點滿滿啊,題目描述什麼的就不說了,浪費我打草紙真的不可饒恕,怎麼說也好幾毛錢,,,,,
在思考不出頭緒後開始瘋狂計數,拿到五個數字之後腦袋都大了,規律呢???
先隨便試一個,然後提交n次,全紅,WA哭了,大力出奇跡已經不好用了,開始研究到底有什麼規律,然後靈光一閃。

#include<stdio.h>
int main ()
{
	int n;
	long long a[100];
	while(~scanf("%d",&n))
	{
		a[1]=3;
		a[2]=6;
		a[3]=6;
		
		for(int i=4;i<=n;i++)
		{
			a[i]=a[i-2]*2+a[i-1];
		}
		printf("%lld\n",a[n]);
	}
	return 0;
 } 

看程式碼很容易明白這道題怎麼做,解釋一下。
第N年的方法數是N-1年的加上2*N-1年的總數,原理高中就學過。

如果n-1格顏色和第一格顏色不相等,那麼N格上只有一種顏色能選,所以方法數是n-1年的,
如果n-1格顏色和第一格顏色相等,那麼N上我們有兩種顏色可以選,在這裡我們計算的是2*(n-2),為什麼是n-2?拿N=4來舉例子,n-1=3, 1和3上顏色相等,在n-1上是不存在的,實際上是n-2時的情況,所以計算的是2*(n-2)。
最後把兩種情況相加輸出就可以,注意盛放結果的依舊是long long。