51nod1267 四個數和為0

2021-08-18 11:29:27 字數 687 閱讀 2467

先得到任意兩個數的和,從小到大排序,從兩邊向中間掃一遍就行了

#include #include using namespace std;

typedef long long ll;

int a[1005];

struct nodesum[1005 * 1005];

bool cmp(struct node a,struct node b)

int main(void)

int cnt = 0;

for(int i = 1;i <= n; i++)

//記錄這兩個數的下標

sum[cnt].l = i;

sum[cnt].r = j;

sum[cnt++].sum = a[i] + a[j];

} }sort(sum,sum + cnt,cmp);

int flag = 0;

int l = 0,r = cnt - 1;

while(l <= r)

//大於0說明大的那個數過於大了,所以大數向左移

else if(temp > 0)

else

//沒有重複,直接退出

else

} }if(flag == 1)

else

return 0;

}

51nod 1267 4個數和為0

思路 先n 2預處理出所有兩兩的組合,那麼就變成要找a b 0的問題了,那麼排序o n 去找就可以了 includeusing namespace std define ll long long const int maxn 1005 1005 struct node node maxn bool ...

51nod 1090 3個數和為0

1090 3個數和為0 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 給出乙個長度為n的無序陣列,陣列中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 0的3個數的組合。如果沒有這樣的組合,輸出no solution。如果有多個,按照3個數中最小的數從小...

51nod 1090 3個數和為0

1090 3個數和為0 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 給出乙個長度為n的無序陣列,陣列中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 0的3個數的組合。如果沒有這樣的組合,輸出no solution。如果有多個,按照3個數中最小的數從小...