100題 第五十一題 和為n連續正數序列

2021-09-30 15:11:04 字數 1060 閱讀 1675

一,題目

輸入乙個正數

n,輸出所有和為

n連續正數序列。

例如輸入

15,由於

1+2+3+4+5=4+5+6=7+8=15

,所以輸出

3個連續序列

1-5、

4-6和

7-8。

二,思路

解法一:連續正序列,不包含n本身。所以子串行中最大元素為 n/2+1

求出到前 i個元素和儲存到b陣列中,然後遍歷陣列b ,i>j 時,求b[i] –b[j] ==n。如果等於則輸出 j+1 到 i 的序列。

時間複雜度:o(n^2)

#include using namespace std;

void print(int a,int j,int i)

} }}

解法二:

我們可用兩個數

small

和big

分別表示序列的最小值和最大值。

首先把small

初始化為1,

big初始化為2。

如果從small

到big

的序列的和大於

n的話,我們向右移動

small

,相當於從序列中去掉較小的數字。

如果從small

到big

的序列的和小於

n的話,我們向右移動

big,相當於向序列中新增

big的下乙個數字。

一直到small

等於(1+n)/2

,因為序列至少要有兩個數字。

#include using namespace std;

void printcontinuoussequence(int small, int big)

void findcontinuoussequence(int n)

// move big forward

big ++;

sum += big;

}}int main()

LeetCode第五十一題 N皇后

問題簡介 給定乙個n n的棋盤,求解如何將n個皇后放置在棋盤上,保證其之間不互相攻擊,即給定乙個整數 n,返回所有不同的解決方案,用 q 和 分別代表了皇后和空位 注 例如下圖為n 8 時的乙個解 舉例 輸入 4 輸出 q solution 1 q q q.q.solution 2 q q q 解法...

LeetCode第五十一題 N皇后

n queens 問題簡介 給定乙個n n的棋盤,求解如何將n個皇后放置在棋盤上,保證其之間不互相攻擊,即給定乙個整數 n,返回所有不同的解決方案,用 q 和 分別代表了皇后和空位 注 例如下圖為n 8 時的乙個解 舉例 輸入 4 輸出 q solution 1 q q q.q.solution 2...

輸入乙個正數n,輸出所有和為n連續正整數序列

public class lzwcode 題目 輸入乙個正數n,輸出所有和為n連續正整數序列。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所以輸出3個連續序列1 5 4 6和7 8。思路 因為整數序列是有序的,可以設立兩個游標begin和end,通過判區間 begin,end 的...