#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
using namespace std;
const int N = 1e5 + 5;
int main()
{
int n, r;
cin >> n >> r;
vector<int> A;
vector<int> C;
vector<int> B;
int x;
for (int i = 0; i < n; i++)
{
cin >> x;
A.push_back(x);
}
int y;
y = A[0];
sort(A.begin(), A.end());
int sum1 = 0, sum2 = 0;
do
{
sum1 = 0;
sum2 = 0;
for (int i = 0; i < n; i++)
{
if (A[i] == y)
{
B.push_back(A[i]);
sum1 += A[i];
if (fabs(sum1 - sum2) > 10)
{
break;
}
}
else if (sum1 + A[i] - sum2 > r)
{
C.push_back(A[i]);
sum2 += A[i];
}
else if (sum1 + A[i] - sum2 <= r)
{
B.push_back(A[i]);
sum1 += A[i];
}
}
if (fabs(sum1 - sum2) <= r && B.size() + C.size() == n)
{
break;
}
else
{
B.clear();
C.clear();
}
} while (next_permutation(A.begin(), A.end()));
sort(B.begin(), B.end());
sort(C.begin(), C.end());
for (int i = 0; i < B.size(); i++)
{
cout << B[i] << " ";
}
cout << endl;
for (int i = 0; i < C.size(); i++)
{
cout << C[i] << " ";
}
}
这个代码的思路不太明白想知道是什么意思
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 赵4老师 2022-03-21 14:24关注
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 VMware 云桌面水印如何添加
- ¥15 用ns3仿真出5G核心网网元
- ¥15 matlab答疑 关于海上风电的爬坡事件检测
- ¥88 python部署量化回测异常问题
- ¥30 酬劳2w元求合作写文章
- ¥15 在现有系统基础上增加功能
- ¥15 远程桌面文档内容复制粘贴,格式会变化
- ¥15 这种微信登录授权 谁可以做啊
- ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
- ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”