| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2066 人关注过本帖
标题:一个非常好玩的算法题
只看楼主 加入收藏
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
以下是引用广陵绝唱在2011-3-22 19:53:57的发言:

如果不是跨平台,在 windows 下,那么用几个输出彩色字母的函数就应该可以的啊,只不过加上几个条件就可以了嘛.但如果要跨平台,我没办法.

嗯,我觉得也很难跨平台。还有好多终端不支持色彩呢。
2011-03-22 22:44
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用广陵绝唱在2011-3-22 19:53:57的发言:

如果不是跨平台,在 windows 下,那么用几个输出彩色字母的函数就应该可以的啊,只不过加上几个条件就可以了嘛.但如果要跨平台,我没办法.
恩, 能不能写个代码我借鉴下, 当作单字节编码处理就可以

[ 本帖最后由 BlueGuy 于 2011-3-23 09:06 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-03-23 09:00
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:2 
程序代码:
#include <tcconio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main(int argc , char *argv[])
{

     if (argc < 2) {
        fprintf(stderr , "Usage:progam name #0strings#1strings..\n") ;
        exit(1) ;
     }
     int  args = 1 ;
     while (args < argc) {
        int len = strlen(argv[args]) ;
        for (int cur = 0 ; cur < len ; cur++) {
            if ( argv[args][cur] == '#' && argv[args][cur+1] >= '0' && argv[args][cur+1] <= '2' || argv[args][cur+1] == 'n') {
                switch(argv[args][cur+1]) {
                    case  '0' : textcolor(LIGHTRED) ; break ;
                    case  '1' : textcolor(LIGHTGREEN) ; break ;
                    case  '2' : textcolor(LIGHTBLUE) ; break ;
                    case  'n' : putchar('\n') ;
                    default   : textcolor(WHITE) ;
                }
                cur++ ;
            }
            else 
                 putchar(argv[args][cur]) ;
        }
        args++ ;
    }
    textcolor(WHITE) ;
  return 0 ;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

without further ado, let’s get started
2011-03-23 10:35
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
如果在ni*x下直接可以设置vt终端的颜色即可。

without further ado, let’s get started
2011-03-23 10:37
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用iFreeBSD在2011-3-23 10:37:49的发言:

如果在ni*x下直接可以设置vt终端的颜色即可。
谢了, 最怕这类题了

我就是真命天子,顺我者生,逆我者死!
2011-03-23 10:53
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
严重怀疑不是楼主本人在发帖.
2011-03-23 14:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 16楼 广陵绝唱
大家都知道楼主和版主是同一个人~
2011-03-23 15:05
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
以下是引用广陵绝唱在2011-3-23 14:03:27的发言:

严重怀疑不是楼主本人在发帖.
iFreeBSD的代码我是不太满意的, 出于效率的考虑, 我想分割字符串,一段一段绘制
,不过还是不会写, 希望 广陵绝唱写个代码参考一下

我就是真命天子,顺我者生,逆我者死!
2011-03-23 15:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
这种字符串过滤经常是一个一个分析的,很少做字符串拆分。除非真的对效率有重要的影响。

这种做法的效率没你想的那么差。如果一个字符不是 "#" 的话,程序流会直接转到 putchar 上。正常情况,系统会对输出进行缓存,并不急于刷屏。putchar 应该有非常快的返回速度。
2011-03-23 20:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
不是效率问题, 就是感觉字符串分割的有点别扭

我就是真命天子,顺我者生,逆我者死!
2011-03-23 21:01
快速回复:一个非常好玩的算法题
数据加载中...
 
   



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

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