讨论 / 《伯虎点秋香》用选择排序为什么只能过一个点
MZJ 2010-08-19 01:37:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeond[6]

得分: 10分

提交日期: 2010-7-31 20:40:00

有效耗时: 156毫秒

测试结果1: 通过本测试点|有效耗时156ms

测试结果2: 测试结果错误.错误结果为:ptctsealacg

正确结果应为:ixwdehbo

测试结果3: 测试结果错误.错误结果为:xwdfb

正确结果应为:hxhiwupk

测试结果4: 测试结果错误.错误结果为:yboergedmvx

正确结果应为:syjnaaxxqmlb

测试结果5: 测试结果错误.错误结果为:jeyhgmfvyu

正确结果应为:gshte

测试结果6: 输出过长|用户输出数据超过标准输出两倍[标准输出3位|选手输出11位]

测试结果7: 测试结果错误.错误结果为:vtpqpivkgd

正确结果应为:mivspya

测试结果8: 输出过少|用户输出数据少于标准输出的50%[标准输出12位|选手输出4位]

测试结果9: 测试结果错误.错误结果为:tdwoqvxkrkcm

正确结果应为:jphuuxh

测试结果10: 测试结果错误.错误结果为:rdpcuuppomj

正确结果应为:evultgcupvei

提交代码: view sourceprint?01.program Project1;

02.var n,k,i,j:integer;

03.

a:array[1..1000]of string;

04.

temp:string;

05.begin

06.readln(n,k);

07.for i:=1 to n do

08.readln(a[i]);

09.for i:=1 to k do

10.begin

11.k:=i;

12.for j:=i+1 to n do

13.if a[j]<a[k] then k:=j;

14.if k<>i then

15.begin

16.temp:=a[k];a[k]:=a[i];a[i]:=temp;

17.end;

18.end;

19.writeln(a[k]);

20.end.

#1 cnfnjatmzx@2010-07-31 10:32:00
回复 删除
这是我的代码,你看看吧.希望对你有帮助

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int cmp(const void *a,const void *b)

{

return strcmp(*(char**)a,*(char**)b);

}

void main()

{

char *name[1001];

int i,j,n,k,t;

scanf("%d%d",&n,&k);

getchar();

for (i=0;i<n;i++)

{

name[i]=(char *)malloc(1000);

gets(name[i]);

}

qsort(name,n,sizeof(name[0]),cmp);

printf("%s\n",name[k-1]);

}

#2 MZJ@2010-08-09 06:14:00
回复 删除
看不懂

很遗憾,C语言我看不懂

#3 Vilaboke@2010-08-09 06:18:00
回复 删除
选择排序不稳定。

如果有相同的数那就不一定是序号小的在前面了。

建议使用冒泡。

#4 zhanglin@2010-08-09 06:22:00
回复 删除
回复 地毯Vilaboke 的帖子

#5 zhanglin@2010-08-09 06:26:00
回复 删除
只用冒泡即可ac,
#6 Vilaboke@2010-08-09 06:38:00
回复 删除
。。。。。我看不懂LZ的选择排序。。

选择:

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then 交换。

冒泡:

for i:=1 to n-1 do

for j;=1 to n-i do

if a[j]>a[j+1] then 交换。

从大到小还是从小到大就换个大于小于号就行。

#7 zhanglin@2010-08-09 06:41:00
回复 删除
#8 zhanglin@2010-08-09 06:41:00
回复 删除
您老今天真闲
#9 zhanglin@2010-08-09 06:43:00
回复 删除
14会做么,

到我帖子里说一下

#10 xyshh94225@2010-08-09 07:07:00
回复 删除
你的k用得真混乱,估计你是把选择排序中的k与题目中的k搞混了吧。

至少随便改变循环终止条件是不对的。

查看更多回复
提交回复