早教吧作业答案频道 -->其他-->
c++编程问题给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
题目详情
c++编程问题
给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
▼优质解答
答案和解析
#include
using namespace std;
int main()
{
int a[5];
int b,c=0,j,k=0;
for(b=0;b<5;++b)
cin>>a[b];
for(int i=0;i<4;++i)
{ c=i;
for(j=i+1;j<5;++j)
if(a[c]>a[j])
c=j;
if(a[c] {int t=a[c];
a[c]=a[i];
a[i]=t;
++k;
}}
cout< for(int i=0;i<5;++i)
cout< return 0;
}
策略:第一个数与后面的数逐个比较,遇到更小的 记下下标,第一轮比较四次,用第一个和最小的交换。
第二个数与后面的数逐个比较,遇到更小的 记下下标,第二轮比较三次,用第二个和最小的交换
以此类推实际交换次数不超过4次
楼上的程序每次遇到小的都交换一次,并非最少次数,楼上的只要换组初始数据就是错误答案
using namespace std;
int main()
{
int a[5];
int b,c=0,j,k=0;
for(b=0;b<5;++b)
cin>>a[b];
for(int i=0;i<4;++i)
{ c=i;
for(j=i+1;j<5;++j)
if(a[c]>a[j])
c=j;
if(a[c] {int t=a[c];
a[c]=a[i];
a[i]=t;
++k;
}}
cout< for(int i=0;i<5;++i)
cout< return 0;
}
策略:第一个数与后面的数逐个比较,遇到更小的 记下下标,第一轮比较四次,用第一个和最小的交换。
第二个数与后面的数逐个比较,遇到更小的 记下下标,第二轮比较三次,用第二个和最小的交换
以此类推实际交换次数不超过4次
楼上的程序每次遇到小的都交换一次,并非最少次数,楼上的只要换组初始数据就是错误答案
看了c++编程问题给定任意顺序的5...的网友还看了以下:
月球上的氦3如何开采最好是在月面上就完成 2020-03-30 …
1.1000*10的n次方=2.已知a的m次方=2,a的n次方=8,求a的m+n次方的值3.如果X 2020-05-14 …
一个圆柱和一个圆锥的底面积相等,圆柱的高是圆锥的1/3.如果圆锥的体积是24平方厘米,那么圆柱的体 2020-05-16 …
一辆汽车从甲地到乙地,最后1/3路程的速度是前段路程上的速度的1/3,如果他在整个路程上的平均速度 2020-05-16 …
1.已知a平房-4a+4与|b-1|互为相反数,则(b/a-a/b)/ab=?2.已知1/x-1/ 2020-05-17 …
1.若5+根号11的小数部分薇a,5-根号11的小数部分为b,求a+b的值2.已知实数a满足|20 2020-05-22 …
一根1米长的小棒第一次截去它的1/3,第二次截去剩下的1/3,如此截下去,第5次后剩下小棒的长度是 2020-06-02 …
1、a-2的绝对值+(b-3)的二平方=0,a的b次方+b的a次方=2、一根1米长的小棒,第一次截 2020-06-03 …
几道一元一次方程1.已知方程mx-3=0的解是x=6求m的值2.如果x=5是方程ax+5=10-4 2020-06-04 …
一批零件,如果师徒二人共同加工,5小时能完成全部的2/3,如果单独加工这批零件,师傅3小时完成全部 2020-06-07 …