题目描述
当 0≤a≤b≤c0≤a≤b≤c 时,称 a,b,c 为上升三元组。
给定一个整数 n,请输出所有三数之和等于 n 的上升三元组。
若有多个三元组满足条件,则首先输出第一项较小的三元组,若第一项相等,则先输出第二项较小的三元组。
输入格式
- 单个整数表示 n
输出格式
- 若干行,每行三个自然数,中间用一个空格分开
数据范围
- 0≤n≤20000≤n≤2000
样例数据
输入:
2
输出:
0 0 2
0 1 1
题解:
使用三层循环来遍历三个遍历,保证非递减序列,然后判断三个数的和要等于n;
#include <iostream> #include<vector> #include<cmath> using namespace std; int main() { int n; cin>>n; int k=0; for(int i=0;i<=n;i++){ for(int j=i;j<=n;j++){ k=n-i-j; if(i<=j&&j<=k){ cout<<i<<" "<<j<<" "<<k<<endl; } } } return 0; }