題目描述:
編寫乙個函式,傳入乙個int型陣列,返回該陣列能否分成兩組,使得兩組中各元素加起來的和相等,並且,所有5的倍數必須在其中乙個組中,所有3的倍數在另乙個組中(不包括5的倍數),能滿足以上條件,返回true;不滿足時返回false。
輸入:
第一行是資料個數,第二行是輸入的資料
輸出:
返回true或者false
輸入範例:
41 5 -5 1
輸出範例:
true
思路:
本題初步理解為兩組互相影響的遞迴,可以通過他們之間的聯絡將其轉換為一組遞迴。
需要兩組數和相等,可以理解為差為0.
往兩組數中新增元素就是在他們之間的絕對值上增減。如果數值新增完畢後兩組數距離為0,即可判定存在分組滿足條件。
牛客網上還有dfs的方法,以後再討論。
#include
#include
#include
using
namespace std;
int sum5;
int sum3;
int dis0;
vector<
int> list;
//假設第index-1個數已經分好,分第index個數
boolf(
int index,
int dis)
return(f
(index+
1,dis+list[index])||
f(index+
1,dis-list[index]))
;}intmain()
else
if(a%3==
0)else
} dis0=
abs(sum5-sum3);if
(f(0
,0))
else
}return0;
}
分組Top N 問題
今天面試,面試官給了這樣乙個場景 有兩張表,一張表存放車隊id,班組id,司機id 另一種表存放司機id,運營時間,運營里程 要查詢出7月份每個車隊每個班組裡的 top 3 這就要用到row number 函式 首先按需求建兩張表 create table demo of topn car comp...
人員分組問題
人員分組,一共有n個人,輸入每個人認識的人名單,若a的名單裡有b或者b的名單裡有a,則a和b互相認識,若a認識b,b認識c,則通過介紹,a也會認識c,請你把所有人員進行分組,每組中的人都能夠互相認識,且分組數最小。思路 兩次遍歷,一次用逆鄰接表,一次用鄰接表,分組數取兩次的最小值。include i...
八皇后問題 C 遞迴
最近在重新看遞迴,準備複試,剛好看到八皇后問題。遇到的問題主要有兩大方面 1.迴圈實現放皇后對相應方格的置1操作,要注意迴圈條件,考慮4種情況。2.遞迴中的迴圈邏輯。見 注釋。另外,由於進入遞迴起始的位置是給定的 0,0 需要在主函式內迴圈實現對第0行所有位置的遞迴求解。這一點也是看了好久,通過遞迴...