#创作计划# 新春欢乐赛(新年游戏)题解
2024-03-03 14:16:21
发布于:浙江
先看题目 求序列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;
}
敲字不易,点个赞吧!
非常感谢!
全部评论 6
声明,所有人在本贴下回复的入均为贴主干儿子!
2025-08-06 来自 浙江
1father[i] = i;
2025-08-06 来自 浙江
0
先看题目 求序列p的最小序列和(可以用p[i]-p[j])
那就使用选择法来做减法。
废话不多说,直接上代码。
先初始化 用全局变量#include<bits/stdc++.h>
using namespace std;
int n,p[101],sum=0;
本题只需要主函数
先输入n
再用for循环输入数组pcin>>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;
}
敲字不易,点个赞吧!
非常感谢!2025-08-06 来自 浙江
0nm,这是你爹早期题解
2025-08-06 来自 浙江
0md,这是我儿子早期题解
2025-08-06 来自 浙江
02025-08-06 来自 浙江
0
%%%
2025-08-06 来自 浙江
0%%%
2025-08-06 来自 浙江
02025-08-06 来自 浙江
0
%¥%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2025-08-06 来自 北京
02025-08-06 来自 浙江
0煞筆你后发的
2025-08-06 来自 北京
0
先看题目 求序列p的最小序列和(可以用p[i]-p[j])
那就使用选择法来做减法。
废话不多说,直接上代码。
先初始化 用全局变量#include<bits/stdc++.h>
using namespace std;
int n,p[101],sum=0;
本题只需要主函数
先输入n
再用for循环输入数组pcin>>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;
}
敲字不易,点个赞吧!
非常感谢!2025-08-06 来自 浙江
0nm,这是你爹早期题解
2025-08-06 来自 浙江
0md,这是我儿子早期题解
2025-08-06 来自 浙江
02025-08-06 来自 浙江
0
有帮助,赞一个