早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
非同源染色体的交叉互换属于易位,即染色体结构变异,只有同源染色体的相邻非姐妹染色单体交叉互换才属于 2020-05-17 …
同时满足下列条件的案件,可适用互碰自赔。( )A.两车或多车互碰,各方均投保交强险。B.仅涉及车辆 2020-05-22 …
非姐妹染色单体间可交叉互换,下列关于四分体的叙述错误的是A一个四分体含有四个染色单体B出现在减数第 2020-05-23 …
减数分裂后期,染色体自由组合交叉互换组合是随机的么?每个减数分裂都一定有交叉互换么?交叉互换有什么 2020-05-24 …
关于四种相互作用,下列说法中正确的是()A.使原子核内质子、中子保持在一起的作用是强相互作用B.在 2020-06-25 …
我国积极推进“互联网+”,为我国政治、文化带来了新的发展契机。回答14~15题。移动互联时代,为避 2020-07-09 …
如图甲、乙分别表示两种染色体之间的交叉互换模式,下列有关叙述正确的是()A.图甲表示同源染色体的交叉 2020-11-30 …
对于理想变压器来说,下列说法中不正确的是()A.是利用互感现象制成的B.可以改变各种电源的额定功率C 2020-12-01 …
古诗文中为了使语句精练工整,常运用“互文”的修辞手法。下列各句没有运用互文的一项是[]A.东西植松柏 2020-12-01 …
(2009•静安区一模)下列说法错误的是()A.染色体交叉互换时的一条染色体含有2个双链的DNA分子 2020-12-16 …