desctiption一中 90 周年校慶,小林準備用一些白色、藍色和紅色的彩帶來裝飾學校超市的櫥窗,他希望滿足以下兩個條件:
(1) 相同顏色的彩帶不能放在相鄰的位置;
(2) 一條藍色的彩帶必須放在一條白色的彩帶和一條紅色的彩帶中間。
現在,他想知道滿足要求的放置彩帶的方案數有多少種。
例如,如圖 9.4-1 所示為櫥窗寬度n=3 的所有放置方案,共 4 種。
input一行乙個整數 n,表示櫥窗寬度(或者說彩帶數目)。
output一行乙個整數,表示裝飾櫥窗的彩帶放置方案數。
sample input
3
sample output
4
分析這樣來想,設
f[n]
表示寬度為n的時候有這麼多種方案
1.考慮第n-1個為red
orwhite
,此時因為不一樣才可以連線著放,所以只有一種選擇
2.考慮第n-1個為blue
,因為要求顏色不一樣才可以夾乙個藍色,所以還是只有一種選擇
所以實際上就是乙個斐波拉契數列,但是不同的,第一二項值都為2
code
/*
*彩帶,
*/#include#define maxi 50
#define int64 long long
using namespace std;
int64 f[maxi];
int main()
printf("%d",f[n]);
return 0;
}
description地圖上有 n 個城市,乙隻奶牛要從 1 號城市開始依次經過這些城市,最終到達 n 號城市。但是這只奶牛覺得這樣太無聊了,所以它決定跳過其中的乙個城市(但是不能跳過 1 號和 n 號城市),使得它從 1 號城市開始,到達 n 號城市所經過的總距離最小。假設每乙個城市 i 都有乙個座標(x i ,y i ),從 (x 1 ,y 1 ) 的城市 1 到 (x 2 ,y 2 ) 的城市 2 之間的距離為 | x 1 -x 2 | + | y 1 -y 2 | 。
input第 1 行 1 個正整數 n,表示城市個數。接下來的 n 行,每行 2 個數 x i 和 y i ,表示城市 i 的座標
output第 1 行 1 個正整數 n,表示城市個數。接下來的 n 行,每行 2 個數 x i 和 y i ,表示城市 i 的座標
sample input
4
0 08 3
11 -1
10 0
sample ouput
14
分析這乙個的話就是列舉跳過哪乙個點省去的路程最多
我不知道這和遞推有什麼關係
code
#include#define maxi 100003
#define int64 long long
using namespace std;
int64 f[maxi];
int n;
struct nodecities[maxi];
int main()
for(int i=2;i<=n-1;i++)
cout<
return 0;
}
遞推集合2
設 fi表示從一到 i 最少可以劃分的段數,fi min fbi 1 fci 1 1bi 表示以 i 結尾單調遞增的一段的起點,ci 表示以 i 結尾單調遞減的一段的起點 檢視 int n,last,a,b 100005 c 100005 f 100005 int main memset f,1e7...
遞推演算法(2)
有 2n 的乙個長方形方格,用乙個12 的骨牌鋪滿方格 編寫乙個程式,試對給出的任意乙個n n 0 輸出鋪法總數。演算法分析 1 當n 1時,只能是一種鋪法,鋪法總數有示為x1 1。2 當n 2時 骨牌可以兩個並列豎排,也可以並列橫排,再無其他方法,如下左圖所示,因此,鋪法總數表示為x2 2 3 當...
2016春季學習(2) 遞推
第乙個遞推還是蠻水的,雖然並不知道具體數學,但是還是水過去了。畫外 2011 alibaba cup campus contest。是不是比格很高啊。這裡面有乙個技巧 我們先假設,我們可以表示了1 n中的所有數,那麼下面,如果我們要去湊出n 1,有兩種情況,我們直接就有n 1的項,要麼就是沒有用光前...