找回密码
 点一下
楼主: Renee

hmmm~~一个C语言编程题~~

[复制链接]
发表于 2008-4-29 16:27:04 | 显示全部楼层
没看懂。
回复

使用道具 举报

发表于 2008-4-29 16:27:26 | 显示全部楼层
没看懂不要随便回帖。
回复

使用道具 举报

发表于 2008-4-29 16:28:42 | 显示全部楼层
哦。下次就不会了。
回复

使用道具 举报

发表于 2008-4-29 17:22:40 | 显示全部楼层
真想杀了他.
回复

使用道具 举报

发表于 2008-4-29 17:29:38 | 显示全部楼层
那就杀吧 未命名.jpg
回复

使用道具 举报

发表于 2008-4-29 17:47:24 | 显示全部楼层
...............拜托了,老头先生 ...
回复

使用道具 举报

traxex 该用户已被删除
发表于 2008-4-29 17:51:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-4-29 17:55:20 | 显示全部楼层
羊大人的召唤是需要祭品的...献出traxex ....~
回复

使用道具 举报

发表于 2008-4-29 18:21:48 | 显示全部楼层
渣羊的招唤只需要按几下按键。
回复

使用道具 举报

发表于 2008-4-29 18:23:25 | 显示全部楼层
那就请A大人现场示范~是否随叫随到~
回复

使用道具 举报

发表于 2008-4-29 18:38:40 | 显示全部楼层
引用第43楼天然呆于2008-04-29 17:22发表的  :
真想杀了他.
冷静。。。。
回复

使用道具 举报

发表于 2008-4-29 19:18:43 | 显示全部楼层
还是没看到Renee大人的方法~
回复

使用道具 举报

traxex 该用户已被删除
发表于 2008-4-29 19:19:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-4-29 19:28:35 | 显示全部楼层
啊呀呀,我去看一下~~
555555555再去修改下
[codes=java]int PalindromeIt(char[] s){
    int count = 0;
    int l = s.length;
    int odd = 0;
    char oddchar = (char)(-1);
    for (int i = 0; i < l / 2; i++){
        if (s != s[l - 1 - i]){
            for (int j = l - 1 - i , k = 0; j > i && k == 0; j--){
                if (s == s[j]){
                    for (int m = j; m < l - 1 - i; m++){
                        s[m] = (char)(s[m] + s[m + 1]);
                        s[m + 1] = (char)(s[m] - s[m + 1]);
                        s[m] = (char)(s[m] - s[m + 1]);
                        count++;
                    }
                    k++;
                }
                if (j <= i + 1 && k == 0){
                    if (oddchar != s){
                        odd++;
                        if (odd > l - l / 2 * 2){
                            return -1;
                        }
                        oddchar = s;
                    }                    
                    s = (char)(s + s[i + 1]);
                    s[i + 1] = (char)(s - s[i + 1]);
                    s = (char)(s - s[i + 1]);
                    count++;
                    i--;
                    break;
                }
            }
        }
    }
    System.out.println(s);
    return count;
}[/codes]

加了一个break,避免了下标溢出
增加一个char变量,记录出现奇数次的元素,避免重复判断
遇到出现奇数次的元素每次只交换一个位置,避免重复来回交换

555555不知道还有没有问题
回复

使用道具 举报

发表于 2008-4-29 19:56:10 | 显示全部楼层
偶也用java写了个,不过n长,55555
回复

使用道具 举报

发表于 2008-4-29 20:03:08 | 显示全部楼层
我学软件开发的,
虽然学过这东西,而且都是做过的练习题...
那是去年3月......现在找不到了.................

也不想再做了..........
回复

使用道具 举报

发表于 2008-4-29 20:10:14 | 显示全部楼层
我不会C~~所以用LUA~~5555~~
先做初始化
做一个循环~~次数就是字符串CHAR个数~~
主要内容就是用来做个N个链表~~每种字符一条~~而所有字符按照顺序又是放在一个数组中的~链指针用下标~~
当然~~还要记录下来同类字符最后一个在哪里~~OK~~

然后做一个循环~~从 1 到半长~~
从第一个字符起找到同字符中的最后一个~~
比如 I = 1 的时候~~是 A ~~就直接取到最后一个A的位置~~
从这里再开始做N 到LEN的循环~~把A移动到对称位置~~

ABCABC

先是A~~找到位置4的A~~把A4和B5交换~~然后再和C6交换~~
得到
ABCBCA
这个时候把A1和A6断链
接着B~~找到B4~~和C5交换~~
得到ABCCBA~~
C已经对称~~不管了~~

不知道是不是最少~~测试了一个400长度的好象只用了800步``
回复

使用道具 举报

发表于 2008-4-29 20:11:31 | 显示全部楼层
用链表和数组~~没用过遍历和搜索~~应该次数不算多把
回复

使用道具 举报

发表于 2008-4-29 20:20:57 | 显示全部楼层
其實就素冒泡。
回复

使用道具 举报

发表于 2008-4-29 20:29:09 | 显示全部楼层
本来就没别的思路了~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-2 22:17 , Processed in 0.135602 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表