| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:看例子找算法
取消只看楼主 加入收藏
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
看例子找算法
最近看c语言的科学与艺术,里面有道这样的题
找规律:
-----------------------

原始状态:
R B W W B B R W W R R W R B W
交换1和14(0为第一个字母,即上面的R):
R W W W B B R W W R R W R B B
交换4和13:
R W W W B B R W W R R W R B B
交换4和12:
R W W W R B R W W R R W B B B
交换1和4:
R R W W W B R W W R R W B B B
交换5和11:
R R W W W W R W W R R B B B B
交换2和6:
R R R W W W W W W R R B B B B
交换3和9:
R R R R W W W W W W R B B B B
交换4和10:
R R R R R W W W W W W B B B B
从上面的演示中找出一般的算法,使得对于任意的RWB三个字母组成的字符串,经过该算法后都可以排列成R`````RW``````WB`````B。
-----------------
想了很久想不出来,请网上高人赐教。
搜索更多相关主题的帖子: 艺术 c语言 
2011-08-04 18:43
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
收藏
得分:0 
回复 3楼 loveshuang
感谢3楼,
看了下你的算法,理解了下你的思路。你是想:用j来扫描,用l来计入R,用h来计入B,对吧?
但是测试你的程序中,发现了一个bug:
比如输入:RRRBBWWBBB
经过程序转换的结果是:RRRBBWWBBB,而非理想的RRRWWBBBBB。
看了你的算法给我有些启发
希望我们一起来解决这个bug。
2011-08-05 11:50
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
收藏
得分:0 
回复 3楼 loveshuang
程序代码:
#include<stdio.h>
#include<conio.h>
#define max 15
void main()
{
    char a[max+2];
    printf("请输入%d个字符,仅rwb,\n程序进行重新排序成:r```r,w```w,b```w.\n",max);
    fgets(a,max+1,stdin);
    int lh,rh,p;
    lh=0;rh=max-1;p=0;char tmp;
    while(p<=rh){
        if (a[p]=='r') {
            tmp=a[p];
            a[p]=a[lh];
            a[lh]=tmp;
            p++;
            lh++;
            continue;
        }
        if(a[p]=='b'){
            if(a[rh]!='b'){
                tmp=a[p];
                a[p]=a[rh];
                a[rh]=tmp;
                p++;
                rh--;
                if(a[p-1]=='r'){
                    p--;   
                }
            }
            else while(a[rh]=='b'){rh--;}
            continue;
        }
        if(a[p]=='w') p++;
    }

    for(int i=0;i<max;i++)
    {
        printf("%c",a[i]);
    }
    getch();
}
看看我这个怎么样,目前测试没有问题。
2011-08-05 15:29
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
收藏
得分:0 
回复 6楼 loveshuang
看了下你给的两道题
1.还不晓得时间,空间复杂度怎么算
2.懒得动脑子了···
O(∩_∩)O~,不做了。谢谢你的帮助。
2011-08-05 20:02
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
收藏
得分:0 
回复 9楼 qazujm1212
你的算法
1.与我的题意不符
2.方法是在太野蛮,失去了这题的趣味性
3.b r w字符串都没有字符串结束标志 '\0',输出来的话就一堆乱码。
2011-08-05 20:05
wudihuanying
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2011-7-4
收藏
得分:0 
谢谢大家,我结贴了。
2011-08-05 20:06
快速回复:看例子找算法
数据加载中...
 
   



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

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