分組問題 c 遞迴

2021-10-24 12:16:44 字數 1079 閱讀 5919

題目描述

編寫乙個函式,傳入乙個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行所有位置的遞迴求解。這一點也是看了好久,通過遞迴...