日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

UVA307 Sticks小木棍

發(fā)布時(shí)間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA307 Sticks小木棍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:一開(kāi)始有n根同樣的小木棍,后來(lái)將其切成長(zhǎng)度不超過(guò)50的小木棍,問(wèn)原來(lái)小木棍最短長(zhǎng)度是多少,例如砍完后有四根,長(zhǎng)度分別為1,2,3,4,原來(lái)長(zhǎng)度可能為5,或10。5是最小可能長(zhǎng)度。

分析:可以用深搜,因?yàn)樗慕M成長(zhǎng)度可能性只是所有木棍長(zhǎng)度總和的因數(shù),所以可以直接dfs。

注意剪枝,四個(gè)剪枝:

1、當(dāng)前枚舉的長(zhǎng)木棍長(zhǎng)度不是小木棍長(zhǎng)的和的因數(shù)時(shí)跳過(guò)。

2、與當(dāng)前小木棍長(zhǎng)度相同的小木棍沒(méi)有使用,當(dāng)前小木棍也不會(huì)使用。

3、當(dāng)前是拼新的長(zhǎng)木棍的第一個(gè)小木棍,而最后無(wú)法拼成的,直接回溯。

4、一根木棍補(bǔ)足長(zhǎng)木棍剩余所需長(zhǎng)度,而最后無(wú)法拼成的,直接回溯。

# include<iostream> # include<cstdio> # include<cmath> # include<map> # include<queue> # include<string> # include<string.h> #include<set> #include<list> # include<algorithm> using namespace std; const int maxn = 65536; int a[maxn]; int len; int maxd; int vis[maxn]; bool cmp(int u, int v) { return u > v; } bool dfs(int sum,int cur,int res,int k) {if (res==maxd) {return true;}for (int i =cur ; i < len; i++) {if (vis[i] || (i&&a[i] == a[i - 1] && !vis[i - 1]))continue;//相同長(zhǎng)度的之前沒(méi)使用,所以這里一樣不使用if (a[i] + sum == k) {//成功拼成一個(gè)小木塊vis[i] = 1;if (dfs(0, 0, res + 1,k))return true;vis[i] = 0;return false;}if (a[i] + sum < k) {//沒(méi)拼好vis[i] = 1;if (dfs(a[i] + sum, i + 1, res,k))return true;vis[i] = 0;if (!sum)return false;//最后仍不能拼成}}return false; }int main() {while (cin >> len && len) {int sum=0;for (int i = 0; i < len; i++) {cin >> a[i];sum += a[i];}int ok = 0;sort(a, a + len,cmp);for (int i = a[0]; i <= sum/2; i++) {//從最大的開(kāi)始拼if (sum % i == 0) {memset(vis, 0, sizeof(vis));maxd = sum / i;if (dfs(0, 0,0,i)) { cout << i << endl; ok = 1; break; }}}if (!ok)cout << sum << endl;}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的UVA307 Sticks小木棍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。