选择判断 最后用sum求和
2024-03-02 22:42:49
发布于:浙江
33阅读
0回复
0点赞
先看题目 求序列p的最小序列和(可以用p[i]-p[j])
那就使用选择法来做减法。
废话不多说,直接上代码。
先初始化 用全局变量
#include<bits/stdc++.h>
using namespace std;
int n,p[101],sum=0;
本题只需要主函数
先输入n
再用for循环输入数组p
cin>>n;
for(int i=1;i<=n;i++)
cin>>p[i];
接着使用 循环嵌套搭配选择排序 减小数组
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){ //选择p[i]和p[j]
if(i!=j){ //判断i和j不相等 节省运行时间
if(p[i]>p[j])
p[i]-=p[j];
else
if(p[j]>p[i]) //避免两数相等出现0
p[j]-=p[i]; //使用条件分支进行“大减小”
}
}
最后再用for循环找出p数组中的各数 用sum求和
for(int i=1;i<=n;i++)
sum+=p[i];
cout<<sum;
总代码为
#include<bits/stdc++.h>
using namespace std;
int n,p[101],sum=0; //变量初始化
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>p[i]; //读入p数组和n
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){ //选择p[i]和p[j]
if(i!=j){ //判断i和j不相等 节省运行时间
if(p[i]>p[j])
p[i]-=p[j];
else
if(p[j]>p[i]) //避免两数相等出现0
p[j]-=p[i]; //使用条件分支进行“大减小”
}
}
for(int i=1;i<=n;i++)
sum+=p[i];
cout<<sum; //用sum求和并输出
return 0;
}
敲字不易,点个赞吧!
非常感谢!
这里空空如也
有帮助,赞一个