3 3 演算法練習

2021-10-22 00:21:36 字數 1855 閱讀 1872

時間限制: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有點長...