給出n個石頭及其每個石頭的價值和重量,選取k個石頭,重量之和不大於給定的w,來做成項鍊,要求構成項鍊的石頭的價值之和最大,輸出這個最大值。
#include
#include
using
namespace std;
int n, k, want_w;
//want_w:項鍊不超過的重量
int num;
//已選的石頭數目
int weight, value;
//已選的石頭的總重量,總價值
int max_v;
//最大價值
typedef
struct
stone;
stone a[22]
;//i為已選中石頭數目,
void
dfs(
int i)
else}}
}int
main()
cin >> want_w;
dfs(0)
; cout << max_v << endl;
}return0;
}
給定乙個不大於200的數字,輸出它的乙個非零倍數,這個倍數需要滿足在十進位制表示上的每個位只能為0或1,位數不會超過100位。
剛開始讀完題,以為這個倍數會很大,long long 都儲存不下,難道是用陣列?不過後面知道了這個倍數在long long裡就可以被找到,那就直接從1開始,然後重複乘以10或者乘以10再加1,通過深度優先搜尋完成。
#include
#include
using
namespace std;
long
long a;
long
long ans;
void
bfs(
int n,
long
long b)}}
intmain()
return0;
}
2019 GDUT 新生專題 I A
給定n個數字,計算出最短的連續子串行,使這個子串行的全部數字之和大於或等於給定數字s。如果不存在可以滿足題意的子串行則輸出0。這是經典的,相對比較容易的尺取問題,通過遍歷每乙個連續子串行即可得出答案。但是,由於時間的限制,要注意一些已經沒有意義的連續子串行和被重複計算的過程。include incl...
2019 GDUT 新生專題 I B,C
給出n m的乙個地圖,代表著沒有水的陸地,w 代表著水窪,所以相鄰的水窪,包括對角相鄰,形成乙個池塘,要求的就是池塘的數目。通過深度優先搜尋,對每乙個水窪進行遍歷,被遍歷過的水窪被標記為陸地,防止被再次遍歷或者進入死迴圈,每次退出了迴圈則池塘數目加一,直到地圖上沒有水窪。include includ...
2019 GDUT 新生專題 I G
給出n m乙個地圖,一共最少有2個格,最多有200000格。有起點,終點,怪獸及其攻擊的範圍,輸出從起點到終點的最短距離,如果無法到達終點,則輸出 1 難點 無法直接建立二維陣列儲存地圖 陣列空間太大 需要用一維間接變成二維或者自行開闢空間 對怪獸攻擊範圍的處理 起點或終點在攻擊範圍內。解決 用一維...