給你n個數字,每個數字均不相同,你可以取其中任意個數字相加,如果所得到的結果在給出的數列
中也能找到,則輸出這個等式
第一行乙個數字n
接下來n個數字
輸出你找到的等式,注意看樣例的輸出格式
61 3 5 7 8 9
1+7=81+8=9
3+5=8
1+3+5=9
這道題首先想到的就是分支限界法(<--不知道的童鞋趕緊去看看)限制了深度後才讓輸出的數字數量從少到多。
1 #include2using
namespace
std;
3int
n,q;
4int num[101];5
set s;//
方便尋找
6bool flag[10001];//
標記 7
bool qwe=false;8
void dfs(int sum,int pre,int dep)//
總值,開始搜尋的下標,深度 925
}2627}
28 cout<<"="
30return;//
注意,這這裡無論找不找得到都要退出返回 31}
32for(int i=pre;i<=n;i++)
3340}41
}42intmain()
4350
for( q=2;q//
分支限界精髓重點,迴圈深度搜尋,注意全域性變數
5154
return0;
55 }
入門OJ 最短路徑樹入門
n 100,1 m 3000,1 len 10000。顯然,對於乙個點u,如果刪去的邊不在它到其它點的最短路上,那麼s是不會變的。考慮到兩點之間的最短路不止一條,我們可以給每個點先建出一棵最短路徑樹出來,然後列舉最短路徑樹上的每條邊並把它刪掉,再跑一遍最短路,看s是否變大即可。如果最短路用dijks...
南陽OJ 語言入門 24
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸...
南陽OJ 語言入門 266
描述 給定一行字元,逆序輸出此行 空格.數字不輸出 輸入 第一行是乙個整數n n 10 表示測試資料的組數 每組測試資料佔一行,每行資料中間有且只有乙個空格 這樣你可以把此行當成兩個字串讀取 每行字元長度不超過40 並且保證輸入的字元只有空格 1個 數字,小寫字母三種 輸出對應每行測試資料,逆序輸出...