| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3905 人关注过本帖
标题:关于动态分配+算法
只看楼主 加入收藏
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
/********************************************************
** Highlight software by yzfy(雨中飞燕) http:// *
*********************************************************/
#include <stdio.h>
#include <string.h>

int main(void)
{
    char c;
    while (scanf(" %c", &c)!=EOF
            
&& (c>='A'&&c<='Z'|| c>='a'&&c<='z') )
    {
        int str[30]={1};
        int n=c-'a',d=0;
        if (c<='Z')n=c-'A';
        while (d<=n)
        {
            putchar('A'+d);
            ++str[0];
            for (d=0; str[d]>1; ++d)
            {
                ++str[d+1];
                str[d] = 0;
            }
        }
        putchar('\n');
    }
    return 0;
}


这是其中一种,其实还有一种看似比较变态的方法,BT的二进制

[color=white]

[[it] 本帖最后由 雨中飛燕 于 2008-5-5 19:02 编辑 [/it]]
2008-05-05 18:58
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
还是有规律的``

>A字母```的排列都是:  前一个字母的  当前字母  前一个字母的

有对称性的``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-05-05 19:17
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
for (d=0; str[d]>1; ++d)
{
      ++str[d+1];
      str[d] = 0;
}
这个很巧妙啊

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-05 19:18
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
#include <stdio.h>
#include <ctype.h>
#include <math.h>

int main()
{
    char ch;
    while (scanf(" %c",&ch)!=EOF && isalpha(ch))
    {
        long m,em=1<<(toupper(ch)-'A'+1);
        for (m=1;m<em;m++)
            putchar((char)('A'+(float)log(m&-m)/log(2)));
        putchar('\n');
    }
}


看看这个……

[[it] 本帖最后由 StarWing83 于 2008-5-5 19:50 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-05 19:39
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
哈哈哈,刚刚写出来的,特有成就感的说………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-05 19:41
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
你这样写会比直接循环还要慢。。。。

[color=white]
2008-05-05 19:45
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
/********************************************************
** Highlight software by yzfy(雨中飞燕) http:// *
*********************************************************/
#include <stdio.h>
#include <string.h>
int BinSearch(int n)
{
    int nl=1,nr=32,nm=16;
    if (n&1)return 0;
    for (;nl<nr;nm=(nl+nr+1)>>1)
    {
        if (n&((1<<nm)-1))
            nr=nm-1;
        else
            
nl=nm;
    }
    return nl;
}
int main(void)
{
    char c;
    while (scanf(" %c", &c)!=EOF
            
&& (c>='A'&&c<='Z'|| c>='a'&&c<='z') )
    {
        int n=c-'a',d=0,e;
        if (c<='Z')n=c-'A'; //toupper
        e = 2<<n;
        for (d=1;d<e;++d)
        {
            putchar('A'+BinSearch(d));
        }
        putchar('\n');
    }
    return 0;
}


来一个二分

[color=white]
2008-05-05 19:50
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
慢是因为2^n求n的过程。这个怎么快速求呢?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-05 19:54
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
二分就很快了

[color=white]
2008-05-05 20:35
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
要命的程序,刚才死机了
#include <stdio.h>
#include <ctype.h>
#include<math.h>
void p(char c)
{   int inc=1;
    double re=pow(2,(c-'A'+1));
       while(re>inc)
    {
        int j=inc++;
        int i=0;
        while(!(j&1)){j=j>>1;i++;};
        putchar('A'+i);
    };
       
}
int main()
{
    char ch=getchar();
    if(!isupper(ch))
        printf("error.");
    else
        p(ch);
    putchar('\n');
    return 0;
}

[[it] 本帖最后由 sunkaidong 于 2008-5-5 21:01 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-05-05 20:56
快速回复:关于动态分配+算法
数据加载中...
 
   



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

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