時間限制:1.0s 記憶體限制:512.0mb
輸入乙個正整數n,輸出n!的值。
其中n!=12 * 3 … n。
n*!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a[0]表示a的個位,a[1]表示a的十位,依次類推。
將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。
首先將a設為1,然後乘2,乘3,當乘到n時,即得到了n!的值。
輸入包含乙個正整數n,n
<=1000。
輸出n!的準確值。
在此題中,只用s=s*i不行的。n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。
所以我們採用陣列來計算
#includeusing namespace std;
void fun(int n)
while(p!=0)
}for(int i=tail;i>=0;i--)
cout<>n;
fun(n);
return 0;
}
長度優先搜尋,又名寬度優先搜尋,所遵循的搜尋策略是盡可能「廣」的遍歷搜尋樹,對應樹的分層遍歷。在寬度優先搜尋中,每次都先將搜尋樹某一層的所有結點全部訪問完畢後再訪問下一層,首次達到的目標節點通常就是最優解。
名稱廣度優先搜尋
優點1. 容易解決「最少步數」、「深度最小」問題2. 問題的解靠近解答樹的根結點3. 啟發式搜尋在bfs中更容易實現
缺點1. 空間一般比dfs大2. 狀態重複的排除有時耗時多
農民 john 以擁有世界上最健康的奶牛為傲。他知道每種飼料中所包含的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持它們的健康,使餵給牛的飼料的種數最少。
給出牛所需的最低的維他命量,輸出餵給牛需要哪些種類的飼料,且所需的飼料劑量最少。
維他命量以整數表示,每種飼料最多只能對牛使用一次,資料保證存在解。
第一行乙個整數 v,表示需要的維他命的種類數。
第二行 v 個整數,表示牛每天需要的每種維他命的最小量。
第三行乙個整數 g,表示可用來喂牛的飼料的種數。
下面 g行,第 n 行表示編號為 n 飼料包含的各種維他命的量的多少。
輸出檔案只有一行,包括牛必需的最小的飼料種數 pp;後面有 pp 個數,表示所選擇的飼料編號(按從小到大排列)。
如果有多個解,輸出飼料序號最小的(即字典序最小)。
輸入 #1
4100 200 300 400
350 50 50 50
200 300 200 300
900 150 389 399
輸出 #1
2 1 3
【資料範圍】
對於 100%100% 的資料,1≤v≤25,1≤g≤15。
輸入的所有整數在 [1,1000] 範圍內。
#includeusing namespace std;
int ans[100];//儲存解
int a[100];//牛每天需要的每種維他命的最小量。
int b[100][100];//每種飼料包含的各種維他命的量的多少。
int c[100];//每次搜尋選的飼料編號
int v,g,minn=100000000;
bool pd(int x)//判斷
cin>>g;
for(int i=1;i<=g;i++)
}search(1,0);
cout
return 0;
}
leetcode演算法練習 33 搜尋旋轉排序陣列
所有題目源 git位址 題目假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1 你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是...
資料結構與演算法練習33
直接按行排序,用flag標識是往下走還是往上,直到行數為0或numrows才變。public string convert string s,int numrows int row 0 記錄當前在哪一行。bool flag false 在第一行或最後一行的時候要轉向。true往下,false往上。f...
《C程式語言》練習 3 3
練習 3 3 編寫函式 expand s1,s2 將字串 s1 中類似於 a z 一類的速記符號 在字串 s2 中擴充套件為等價的完整列表 abc xyz。該函式可以處理大小寫字母和數字,並可 以處理 a b c a z0 9 與 a z 等類似的情況。作為前導和尾隨的 字元原樣排印。那個if有點長...