題目大意:給出1−9
1-91−
9每個數字的個數,問最多能組成多少個不同的形如a+b
=c
a+b=c
a+b=
c的式子。(1+2
=32+1
=31+4
=5
1+2=3 2+1=3 1+4=5
1+2=32
+1=3
1+4=
5這些都視為不同情況)
思路:真的爆搜就過了,只需要乙個特別簡單的剪枝。通過列舉發現最多只有36
3636
個式子,且數字i
ii只需要用到36−i
36-i
36−i
次。直接爆搜o(2
36)
o(2^)
o(236)
會超時,需要乙個小剪枝:假設我們當前該判斷第cur
curcu
r個式子,且有num
numnu
m個式子成立,答案為ans
ansan
s,那麼當36−c
ur+n
um
<=a
ns
36-cur+num<=ans
36−cur
+num
<=a
ns時,就沒有搜下去的必要了。
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace std;
typedef
long
long ll;
int a[10]
,d[40][
3],vis[12]
,ans;
void
init()
}//cout<}
void
dfs(
int cur,
int num)
++a[d[cur][0
]],++a[d[cur][1
]],++a[d[cur][2
]];dfs
(cur+
1,num);}
intmain()
if(!flag)
printf
("case #%d: %d\n"
,++times,36)
;else
}return0;
}
hdu 1254 推箱子 廣搜 深搜
注意以下幾點 1.箱子是否可走 2.人是否可達箱子後面 3.箱子的每個方向只走一次,而不是每個位置 廣搜箱子路徑,深搜人可否達箱子後面,記錄方向用visb 10 10 4 來記錄 include include include include include includeusing namespa...
hdu 1010 深搜 回溯
也不想解釋了,只是做來找回做題的感覺。遲d出個這方面的小總結,越來越發現對所學知識作總結的重要性了 1010tempter of the bone include includeint n,m,time int xs,ys,xd,yd int direc 4 2 char str 11 11 boo...
HDU 1401 Solitaire (雙向廣搜)
題意 在二維8 8的方格,給定4個初始點和4個最終點,問在8步內是否能從初始點走到最終點,雙向廣搜 同時對初始點和最終點廣搜4步,對每一步記錄狀態,初始點為 1 最終點為 2 若在限定時間內初始點的狀態能到達 2 或最終點的狀態能到達 1 則為yes!要記得排序。include include in...