在結點1處放乙個小球,它會往下落。每個內結點上都會有乙個開關,初始全部關閉,當每次有小球落到乙個開關上時,狀態都會改變。當小球到達乙個結點是,如果結點上的開關關閉,則往左走,否則往右走,直到走到葉子的結點,如圖。
【分析】
對於乙個結點k,其左結點和右結點分別為2k和2k+1。
小球落到結點處,先改變,後選擇。
【**】
1 #include2 #include3【總結】const
int maxd = 20;4
int s[1
<
5int
main()18}
19 printf("
%d\n
",k/2
);20}21
return0;
22 }
"<
1.過載輸出流運算子
2.資料移位運算子:x = i << 4 ; //將 i 的值左移4位放大2的4次方
memset(s,0,sizeof(s));
//一般用在對定義的字串進行初始化
memst( "初始化字串","初始化字元" ,"初始化字串的記憶體空間長度" );
sizeof():計算字串陣列的長度
sizeof 與 strlen區別:
1 har str[11]="0123456789
";//
注意這裡str大小因該大於等於11,應考慮'\0'在內,否則編譯器會報錯
2int a=strlen(str); //
a=10; >>>> strlen 計算字串的長度,以結束符 0x00 為字串結束。
3int b=sizeof(str); //
而b=11; >>>> sizeof 計算的則是分配的陣列 str[11] 所佔的記憶體空間的大小,不受裡面儲存的內容改變。
1//解法二: (目前還沒領悟 = =)2//
i,當i是奇數時,它是往左走的第(i+1)/2個小球;3//
當i是偶數時,它是往右走的第i/2個小球
45 #include6
intmain()
12else
13 printf("
%d\n
",k);14}
15return0;
16 }
UVa679 小球下落(樹)
給下落的深度和小球個數,小球依次下落,結點有個開關,每到乙個結點,開關關向左,開向右 一開始想到了簡單模擬,結果超時 include include include define maxn 20 using namespace std int s 1 printf d n now 2 return ...
UVa679小球下落(二叉樹的編號)
樹是n個元素的有限集合,不再是序列,其中 n 0 樹可以看成無共享純廣義表。二叉樹的3個要素,根結點,左子樹和右子樹。二叉樹不是樹,樹的兩個要素是根結點和子樹森林。無論線性結構還是樹形結構,第乙個元素都沒有前驅。線性結構的最後乙個元素都沒有後繼,樹形結構有多個葉子結點,都沒有後繼。對於中間的一般元素...
UVa679 完全二叉樹編號
這題我也是用了兩種方法,第一種比較常規,但超時,第二種比較討巧 運用完全二叉樹的性質,對於結點k,左子結點編號2k,右子結點編號2k 1,用乙個陣列表示當前每個結點狀態,然後模擬每個小球的下落過程 include using namespace std const int maxdeep 20 in...