RMQ問題是指:對于長度為n的數列A,回答若干詢問RMQ(A,i,j)(i,j<=n),返回數列A中下標在[i,j]里的最小值下標。
上傳時間: 2013-12-26
上傳用戶:rocwangdp
Ex3-23 親兄弟問題 « 問題描述: 給定n 個整數0 1 1 , , , n- a a a 組成的序列。序列中元素i a 的親兄弟元素k a 定義為: min{ | } k i j n j j i a = a a ³ a < < 。 親兄弟問題要求給定序列中每個元素的親兄弟元素的位置。元素i a 的親兄弟元素為k a 時,稱k 為元素i a 的親兄弟元素的位置。當元素i a 沒有親兄弟元素時,約定其親兄弟元素 的位置為-1。 例如,當n=10,整數序列為6,1,4,3,6,2,4,7,3,5 時,相應的親兄弟元素位 置序列為:4,2,4,4,7,6,7,-1,9,-1。 « 編程任務: 對于給定的n個整數0 1 1 , , , n- a a a 組成的序列,試用抽象數據類型棧,設計一個O(n) 時間算法,計算相應的親兄弟元素位置序列。 « 數據輸入: 由文件input.txt提供輸入數據。文件的第1 行有1 個正整數n,表示給定給n個整數。 第2 行是0 1 1 , , , n- a a a 。 « 結果輸出: 程序運行結束時,將計算出的與給定序列相應的親兄弟元素位置序列輸出到output.txt 中。 輸入文件示例 輸出文件示例 input.txt 10 4 2 4 4 7 6 7 -1 9 -1 output.txt 6 1 4 3 6 2 4 7 3 5
上傳時間: 2013-12-17
上傳用戶:shizhanincc
設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序。
標簽: 線程
上傳時間: 2013-12-16
上傳用戶:TRIFCT
Java: 在n 張撲克牌中找出順子 題目是這樣的:有n張撲克牌,每張牌的取值范圍是:2,3,4,5,6,7,8,9,10,J,Q,K,A。在這n張牌中找出順子(5張及5張以上的連續的牌),并將這些順子打印出來。 思路:我的思路其實很簡單,首先就是要去掉重復的牌,因為同樣的順子之算一個,顯然JAVA中的Set很適合這個工作。同時又需要對這些牌進行排序,毫無疑問就是TreeSet了。然后從小到大遍歷這些牌,并設置一個計數器count。若發現連續的牌,則count++;若發現不連續的,分2中情況:若count>4,則找到了一個順子,存起來;反之則什么都不做。然后count=1,從新開始找順子。下面就是代碼:
標簽: Java
上傳時間: 2013-12-22
上傳用戶:hewenzhi
問題描述 設有n種不同面值的硬幣,各硬幣的面值存于數組T[1:n]中。現要用這些面值的硬幣來找錢,可以實用的各種面值的硬幣個數不限。當只用硬幣面值T[1],T[2],…,T[i]時,可找出錢數j的最少硬幣個數記為C(i,j)。若只用這些硬幣面值,找不出錢數j時,記C(i,j)=∞。 編程任務 設計一個動態規劃算法,對1≤j≤L,計算出所有的C( n,j )。算法中只允許實用一個長度為L的數組。用L和n作為變量來表示算法的計算時間復雜性 數據輸入 由文件input.txt提供輸入數據。文件的第1行中有1個正整數n(n<=13),表示有n種硬幣可選。接下來的一行是每種硬幣的面值。由用戶輸入待找錢數j。 結果輸出 程序運行結束時,將計算出的所需最少硬幣個數輸出到文件output.txt中。
標簽:
上傳時間: 2016-07-28
上傳用戶:yangbo69
工廠採購管理系統,採用delphi+sqlserver開發,完全C/S架設,所有數據全部通過存儲過程活觸發器完成
標簽: 系統
上傳時間: 2013-12-14
上傳用戶:zhoujunzhen
設有n 個程序{1,2,…, n }要存放在長度為L的磁帶上。程序i存放在磁帶上的長度是 Li,程序存儲問題要求確定這n 個程序在磁帶上的一個存儲方案,使得能夠在磁帶上存儲盡可能多的程序。對于給定的n個程序存放在磁帶上的長度,編程計算磁帶上最多可以存儲的程序數。
上傳時間: 2013-12-01
上傳用戶:sqq
河內塔問題 #include<stdio.h> #include<stdlib.h> int fun_a(int) void fun_b(int,int,int,int) int main(void) { int n int option printf("題目二:河內塔問題\n") printf("請輸入要搬移的圓盤數目\n") scanf("%d",&n) printf("最少搬移的次數為%d次\n",fun_a(n)) printf("是否顯示移動過程? 是請輸入1,否則輸入0\n") scanf("%d",&option) if(option==1) { fun_b(n,1,2,3) } system("pause") return 0 } int fun_a(int n) { int sum1=2,sum2=0,i for(i=n i>1 i--) { sum1=sum1*2 } sum2=sum1-1 return sum2 } void fun_b(int n,int left,int mid,int right) { if(n==1) printf("把第%d個盤子從第%d座塔移動到第%d座塔\n",n,left,right) else { fun_b(n-1,left,right,mid) printf("把第%d個盤子從第%d座塔移動到第%d座塔\n",n,left,right) fun_b(n-1,mid,left,right) } }
上傳時間: 2016-12-08
上傳用戶:努力努力再努力
指定一個數字轉換回十進位,八進位,十六進位#include <stdio.h> #include <stdlib.h> int main(void) { int number =89 printf("數字 %d\n",number) /* %d 為十進位輸出格式*/ printf("八進位為 %o\n",number) /* %o 為八進位輸出格式*/ printf("十六進位為%x\n",number) /* %x 為十六進位輸出格式*/ system("pause") return 0 }
上傳時間: 2013-11-29
上傳用戶:tyler
兩臺處理機A 和B處理n個作業。設第i個作業交給機器 A 處理時需要時間ai,若由機器B 來處理,則需要時間bi。由于各作 業的特點和機器的性能關系,很可能對于某些i,有ai >=bi,而對于 某些j,j!=i,有aj<bj。既不能將一個作業分開由兩臺機器處理,也沒 有一臺機器能同時處理2 個作業。設計一個動態規劃算法,使得這兩 臺機器處理完成這n 個作業的時間最短(從任何一臺機器開工到最后 一臺機器停工的總時間)。研究一個實例:(a1,a2,a3,a4,a5,a6)= (2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)
上傳時間: 2014-01-14
上傳用戶:獨孤求源