| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4289 人关注过本帖, 4 人收藏
标题:今天的周赛题,真的是听不懂,求教
只看楼主 加入收藏
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
小弟愚笨,时空间复杂度和英文都不懂,不过根据问题描述想出一个办法,不过我还没能写出代码,等下去试试

我的想法如下:

因为数据只有{1,2,3}3种可能
那么分别统计出1和2的数量
例如{2,2,1,3,3,3,2,3,1}
1有两个,2有三个。

然后进入交换环节
for(i=0; i < i1_Count; i++)
{
    if (arr[i] == 1)
        countinue;
    else
        for(j=i1_Count - 1; j < iCount; j++)
        {
            if( arr[j] == 1)
            {
                swap(arr[i],arr[j]);
                iChangeCount++;   //这么一小段过程我按了无数次Ctrl+S在网页上.....
                break;
            }
        }
}

2的过程也如此类推

好吧我的语文也不行

我的想法其实是
排序后,有多少个1前几位就是1..有多少个2,那么1之后的几位也都是2,然后因为1和2都排好了那么3肯定也是全在后面了。根据这个想法那么应该就比较容易写出最小交换次数了(我想......





BTW:妹子待遇无限好


[ 本帖最后由 随风飘荡 于 2012-7-22 15:18 编辑 ]
2012-07-22 15:07
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
我靠,我来试试这样可不可以。

统计1,2,3分别有多少个,若1最多,比如说为n个,那么我们排列2,3,假设2有m个,3有t个。

2的位置从n+1到n+m,3的位置从n+m+1到n+m+t,再去测一遍。

我刚按照我第二种方法写了个代码直接RUNTIME ERROR!
2012-07-22 15:54
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
D版大大在妹子的贴子上果然活跃无比,电话拿到了没,我也试试去,刚去洗澡,广州好恐怖,要台风了
2012-07-22 16:09
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
我又来了,我不是针对ACM的,不过应该能行哦
程序代码:
output 1
/* -------------------------------
12
3 2 1 3 2 1 3 2 1 1 2 3
1  1  1  1  2  2  2  2  3  3  3  3

 change:5
------------------------------- */
output2 

/* -------------------------------
9
2 2 1 3 3 3 2 3 1
1  1  2  2  2  3  3  3  3

 change:4
------------------------------- */

求指点~


[ 本帖最后由 随风飘荡 于 2012-7-22 16:30 编辑 ]
2012-07-22 16:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
佩恩估计是哪里存在越界,没看到代码不好说。

而随风,你的第1组输出结果就不对,正确结果是4。

重剑无锋,大巧不工
2012-07-22 16:39
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
是的,回过头我也看出来了如果分优先级从不同区域查找的话代码会变得无比繁杂,我再想想
2012-07-22 16:44
鱼∞鱼
Rank: 2
等 级:论坛游民
帖 子:31
专家分:67
注 册:2012-6-5
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
在下写的  求指点
2012-07-22 17:28
鱼∞鱼
Rank: 2
等 级:论坛游民
帖 子:31
专家分:67
注 册:2012-6-5
收藏
得分:0 
错了  第一组 奇怪我们居然是一样5
2012-07-22 17:30
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
标题加个色,以示鼓励

重剑无锋,大巧不工
2012-07-22 17:35
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
终究我还是没想出别的办法,我规避开了这个问题,这次应该能通过

程序代码:
out
/* ----------------------------
12
1 2 3 1 2 3 3 2 1 1 2 3
1  1  1  1  2  2  2  2  3  3  3  3

 change:4

20
1 2 3 3 2 1 1 1 1 2 3 3 2 1 2 3 2 1 2 1
1  1  1  1  1  1  1  1  2  2  2  2  2  2  2  3  3  3  3  3

 change:6

9
2 2 1 3 3 3 2 3 1
1  1  2  2  2  3  3  3  3

 change:4
---------------------------- */

说来论坛在线人数近万每日超不过500贴是什么情况


[ 本帖最后由 随风飘荡 于 2012-7-22 18:40 编辑 ]
2012-07-22 18:12
快速回复:今天的周赛题,真的是听不懂,求教
数据加载中...
 
   



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

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