| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:算法实现题1.2(探讨)
取消只看楼主 加入收藏
大蛇丸_
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-6-3
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:2 
算法实现题1.2(探讨)
程序代码:
算法实现题1-2 
1.问题描述:在数据加密和数据压缩中常需要对特殊的字符串进行编码.给定的字母表A由26个小写英文字母组成,即A={a, b, ..., z}.该字母表产生的升序字符串是指字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最大出现1次.
     例如a, b, ab, bc, xyz等字符串都是升序字符串.现在对字母表A产生的所有长度
     不超过6的升序字符串按照字典序排列并编码
     1   2   ... 26  27  28  ...
     a   b   ... z   ab  ac  ...
     对于任意长度不超过6的升序字符串,迅速计算它在上述字典中编码
2.算法设计:对于给定的长度不超过6的升序字符串,计算它在上述字典中编码
3.数据输入:输入数据由文件名input.txt的文本文件提供.文件的第1行是一个正整数k,表示接下来共有k行.在接下来的k行中,每行给出一个字符串
4.结果输出:将计算结果输出到文件output.txt.文件共有k行,每行对应一个字符串的编码
            输入文件示例                   输出文件示例
            input.txt                        output.txt
            2
            a                                1
            b                                2


[ 本帖最后由 大蛇丸_ 于 2013-6-14 01:46 编辑 ]
搜索更多相关主题的帖子: 字符串 字母表 数据加密 英文字母 
2013-06-13 00:14
大蛇丸_
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-6-3
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

int f(int i,int k) {
    int sum = 0, j;
    if(k == 1) return 1;
    for(j = i + 1; j <= 26; j++) sum += f(j, k - 1);
    return sum;
}

int g(int k) {
    int sum = 0, i;
    for(i = 1; i <= 26; i++) sum += f(i, k);
    return sum;
}

int change(char c) {
    return c - 'a' + 1;
}

int order(char s[]) {
    int k = strlen(s), i, t, len, j;
    int sum = 0, temp = 0;
    for(i = 1; i < k; i++) sum += g(i);
    for(i = 1; i < change(s[0]); i++) sum += f(i, k);
    for(i = 1, temp = change(s[0]); i < k; i++) {
        t = change(s[i]);
        len = k - i;
        for(j = temp + 1; j < t; j++) sum += f(j, len);
        temp = t;
    }
    return sum + 1;
}

int main() {
    char s[1000];
    for( ; gets(s); printf("%d\n", order(s))) ;
    return 0;
}

冷静....!
2013-06-15 15:23
大蛇丸_
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-6-3
收藏
得分:0 
楼上又一SB....鉴定完毕!...

冷静....!
2013-06-15 15:32
快速回复:算法实现题1.2(探讨)
数据加载中...
 
   



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

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