| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 380 人关注过本帖
标题:请教一个算法,大神快来,我想了一晚了没想出来
只看楼主 加入收藏
lnea
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2012-12-13
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:5 
请教一个算法,大神快来,我想了一晚了没想出来
有没有能实现这种的方式?麻烦告诉下呗,昨晚想了一晚没想出来。
是这样的:
         给10个变量赋值,比如a到j赋给0到9,然后按从大到小排序输出a到j,是同时输出a b c 还有他们的值这些,不单单是输出a b c ,,,,或者是数。然后给最小的三个重新赋另外的值,然后输入一个数,怎么判断输入的数里有前面排列出的最小的三个数(重新赋值的)?

[ 本帖最后由 lnea 于 2014-9-3 19:01 编辑 ]
2014-09-03 18:58
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:10 

1“然后按从大到小排序输出a到j,是同时输出a b c 还有他们的值这些”
简单说说:
请问这句话 具体是不是说你的变量a=6之后 a基本暂时成为了const常量 不能再被赋值了?
排序之后a的值和其他值交不交换?
例如a=1 b=3  那么从大到小排序之后是a=3 b=1呢 还是b=3 a=1呢?

2 “不单单是输出a b c ,,,,或者是数。”
请问你这句话是不是说 输出变量a 的时候 不仅要输出变量a的字符名称'a' 而且要输出a的值 6对不对?

3“然后给最小的三个重新赋另外的值,然后输入一个数,”
这么说的话前面的变量不能是const 变量了

4“怎么判断输入的数里有前面排列出的最小的三个数(重新赋值的)?”
重点的是 你这个问题 你自己需要给出数据结构 或者 给出一定的数据结构 我们来帮你完善和补充
2014-09-03 19:17
lnea
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2012-12-13
收藏
得分:0 
回复 2 楼 erty1001
呃。。其实我也不懂怎么说我想的这些。。这个哦也没研究这么深,没用刀什么数据结构,就想到排序了那原来的值都变了才能按序输出了,就卡了想不到了,形象点说就是我想这样:比如甲乙丙三个人吃饼干,然后统计他们吃了多少块,比如甲3,乙9,丙7,要他们按自己的号码(吃了多少)从小到大排列,之后我要选出最小的甲,要他拿着自己的号站出来,就像甲3这样。然后我在给他一个数8,,然后我在拿着一组数比如384,如果里面有甲拿着的数的话他就答应一声有,没的话就说没,。差不多就这么个意思,不懂这种的能不能实现,我就想到用另外3个变量分别统计吃了多少,然后冒泡排序,但是排序出来输出的话不能是甲3这样,后面就想了好久没想出来。。。。。
2014-09-03 21:03
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:10 
printf("甲%d",a);//当a=3,输出"甲3".
这样?

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-03 21:21
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
简单说说:
1:比如甲3,乙9,丙7,要他们按自己的号码(吃了多少)从小到大排列,
根据你后面的要求,这个可以实现。例如原数据记录成 int a[3]={3, 9, 7} ; 请忽略非编程状态下的语言格式。
                               每个人的名字 char *name[3]={“a”,“b”,“c”};
                    建立一个和a等长度的数组指针 int p[3]={NULL,NULL,NULL} ;
    然后排序,排序过程忽略,排序结果暂时假设为   p[0]=0 p[1]=2 p[2]=1  忽略格式。
                                  表示a[p[0]] <= a[p[1]] <=  a[p[2]]
   以后可以根据p指针数组的状态进行原数组的排序输出     
2"之后我要选出最小的甲,要他拿着自己的号站出来,就像甲3这样。"
根据排序结果 你可以这样调用 设想要第m小的数据 a[p[m]]   关于m加不加1自己判断

3"然后我在给他一个数8,"
可以实现 m=0; a[p[m]]=8;  如果需要重新排序 记得重新排序。 过程忽略

4“然后我在拿着一组数比如384,如果里面有甲拿着的数的话他就答应一声有,没的话就说没,。”
 这个比较复杂 难度和前面的不是一个数量级
我们这里假设 已经按正确排序        int a[3]={3, 9, 7}
                                   int p[3]={0,2,1}
新建立一个数组,长度假设为4吧 表示你要查找的数值  int find[4]={0,2,4,8}   
再建立一个数组和a等长 表示原数组a里对应值有没有在你的数组里出现 int ans[3]={0,0,0}
循序循环匹配find[i] i=1:4   查找a[j] j=1:3  如果有就标记对应 ans[j]=1; 已经标记的不再重新标记。

根据标记结果 可以按标志输出原数据         

5“我就想到用另外3个变量分别统计吃了多少,然后冒泡排序,但是排序出来输出的话不能是甲3这样”

你的思路正确
收到的鲜花
  • lnea2014-09-03 22:33 送鲜花  3朵   附言:好文章
2014-09-03 21:28
lnea
Rank: 1
等 级:新手上路
帖 子:15
专家分:7
注 册:2012-12-13
收藏
得分:0 
回复 5 楼 erty1001
指针没学稳,这还有个数组套指针数组的之前都没见过,,,要好好消化一下了我,谢谢啦~我慢慢研究~
2014-09-03 22:28
快速回复:请教一个算法,大神快来,我想了一晚了没想出来
数据加载中...
 
   



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

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