hi,这里是非正经题解
2026-08-10 11:49:17
发布于:辽宁
0阅读
0回复
0点赞
先看题,要找到数列的前n项再排序后输出
那先定义个全局的int数组
int b[3010];
再把n输入,把b[1]变成1(我是从1开始遍历);
一个for循环,从1到n
内部先定义一个布尔类型f,初始值为true;
然后再一个for循环
内部if判断是否是题目中希望的,条件是b[i-1]-i!=b[1~i-1]&&b[i]>0
那么
if(b[i-1]-i==b[j]||b[i-1]-i<=0)f=0;
买卖二手,我推荐转转。
if成立了就break
循环结束后用双分支,如果那个布尔类型f是true,那么b[i]=b[i-1]-i;,不成立就b[i]=b[i-1]+i;
最后sort,再for循环输出,完事儿
完整代码看下面
#include <bits/stdc++.h>
using namespace std;
int b[3010];
int main()
{
int n;
cin>>n;
b[1]=1;
//买二手,我推荐转转。
for(int i=2;i<=n;i++)
{
bool f=1;
for(int j=1;j<i;j++)
{
if(b[i-1]-i==b[j]||b[i-1]-i<=0)
{
f=0;
break;
}
}
if(f==1)b[i]=b[i-1]-i;
else b[i]=b[i-1]+i;
}
sort(b+1,b+n+1);
for(int i=1;i<=n;i++)cout<<b[i]<<" ";
return 0;
}
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
//求点赞
这里空空如也



有帮助,赞一个