| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1185 人关注过本帖
标题:求教:解这个题目的思路是什么,最小交换次数得到有序序列,有代码说明更好 ...
只看楼主 加入收藏
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
收藏
已结贴  问题点数:20 回复次数:2 
求教:解这个题目的思路是什么,最小交换次数得到有序序列,有代码说明更好了。
题目。给出一组序列,输出最少要交换多少次其中的数字,才能得到从小到大有序序列。
Sample Input
2/*表示几组测试数据*/
3/*第一组测试数据元素个数*/
1 2 3
5/*第二组测试数据元素个数*/
2 3 5 4 1
 
Sample Output
0
3 /*1<->2;2<->3;3<->5最少三次*/
搜索更多相关主题的帖子: 交换 
2009-08-12 14:30
Sean仔
Rank: 2
等 级:论坛游民
帖 子:17
专家分:79
注 册:2009-8-10
收藏
得分:10 
最优解问题,又是ACM吧- -|||怎么那么多人做这个~那个学校的?我上去玩玩~
还是晚两局军旗再说,和你一起等答案,我也A不了= =

[ 本帖最后由 Sean仔 于 2009-8-12 15:55 编辑 ]
2009-08-12 15:53
mingailei
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2009-8-11
收藏
得分:10 
#include<stdio.h>
main(){
int a[5];
int flag=0;//标记,用于判断是否交换,交换了则赋值1
int count=0;//交换次数
int min;//
int i,j;
for(i=0;i<5;i++){
    printf("qing输入:a[%d",i);
    printf("]:");
   scanf("%d",&a[i]);
  }
for(i=0;i<5;i++){
   int temp;//临时变量
   int k;//用于记录每一次循环中最小元素的下标
   min=a[i];//
   for(j=i+1;j<5;j++){
   if(min>a[j]) {min=a[j];k=j;flag=1;}
   }
   if(flag==1){count++;flag=0;temp=a[i];a[i]=a[k];a[k]=temp;}
}
printf("最少交换次数为:%d\n",count);
}

[ 本帖最后由 mingailei 于 2009-8-12 19:44 编辑 ]
2009-08-12 16:42
快速回复:求教:解这个题目的思路是什么,最小交换次数得到有序序列,有代码说明 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015422 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved