宿舍先玩鬥地主再玩24點~
費腦子不想算了,回hdu寫個題吧
可以考慮簡單暴力全排列,
符號位三個 4*4*4;
數字四個 4*3*2*1;
但寫起來**太多。
dfs進去,一共四個數,算三次運算,每次運算可以向前結合,可以向後結合。
特別注意int型時的整除。
不要求顯示組合情況只要yes or no。
//
// main.cpp
// hdu
//// created by baodong on 15/4/4.
//#include
#include
#include
#include
#include
using
namespace
std;
int parsenum(char input)else
if (input[0] == 'k')
if (input[0] == 'q')
if (input[0]== 'j')
return input[0]-'0';
}}int cmp(const
void *a,const
void *b)
int mark = 0;
int numarr[4]; //存四個數
void dfs(int sum,int cur,int m)
//向前結合
dfs(sum+cur,numarr[m+1],m+1);
dfs(sum-cur,numarr[m+1],m+1);
dfs(sum*cur,numarr[m+1],m+1);
if(cur!=0&&sum%cur==0)
dfs(sum/cur,numarr[m+1],m+1);
//向後結合
dfs(sum,cur+numarr[m+1],m+1);
dfs(sum,cur-numarr[m+1],m+1);
dfs(sum,cur*numarr[m+1],m+1);
if(numarr[m+1]!=0&&cur%numarr[m+1]==0)
dfs(sum,cur/numarr[m+1],m+1);
}int main(int argc, const
char * argv)
qsort(numarr,4, sizeof(numarr[0]), cmp );
dowhile (!mark && next_permutation(numarr,numarr+4));
if(mark)else
mark = 0;
}return
0;}
hdu1007 最近點對
題意 給你n個點,讓你求最近的兩個點的距離是多少.思路 這個題目我沒思路,我在網上看的是什麼分治 鴿巢原理,分治我知道,鴿巢原理我也知道,但是這個題目就是沒有證明出來他和鴿巢原理有jm關係,總之就是先以x或者y優先sort一下,然後每次列舉每個相鄰點的附近5個就行了 加自己一共六個 而且這個題目的前...
HDU 1007 最近點對
分治法求最近點對 遞迴將點不斷分成小組,計算最短距離。此時的最短距離僅僅是兩點都屬兩塊的某一塊 這裡的分割點是mid點 還需要考慮兩點分屬兩塊的情況。這時對於選點則把範圍縮小到了以mid為中心。再將距離mid點x軸2 mindist範圍點考慮在內。在這些點中,再取mid點,留下那些 y的距離不大於m...
hdu 1007 最近點對
最近點對問題定義 已知上m個點的集合,找出對接近的一對點。在二維空間裡,可用分治法求解最近點對問題。預處理 分別根據點的x軸和y軸座標進行排序,得到x和y,很顯然此時x和y中的點就是s中的點。情況 1 點數小於等於三時 情況 2 點數大於三時 首先劃分集合s為sl和sr,使得sl中的每乙個點位於sr...