博文

残缺数问题(2007-05-03 19:33:00)

摘要:// 这是QQ群里某网友提出的问题,贴出我的代码,我想应该找完了
/*  用 0,1,2,3,4,5,6,7,8,9 填写 [][][]+[][][]=[][][][] 使对应的加法正确。
** 首先可以确定 1 的位置[1][][][]因为每个数字只能用一次,所以每两个数字
** 相加如果所得结果模 10 后的数字或者加 1(有进位时)后的数字已经使用过
** 则这两个数不不能填在两个加数相同的位置上。
** 例如:2+3=5,如果取 2,3 时数字 5 没有使用则可以考虑将2 3 5这三个数填
** 入([][][2]+[][][3]=[1][][][5]) 代码如下:(主要用了递归的思想)
 */ #include <stdio.h>
#include <string.h> struct stack{      
 int a;       
 int b;        
 int c;
 int j;
}; struct stack stk[4] =  { 0 };
int          digit[] = { 0,1,2,3,4,5,6,7,8,9 }; void get(int d,int *status){
 int i,j,sum = 0,saveSum = 0;
 
 if(d == 3){
  if(stk[3].j == 1){
   printf( "%d%d%d+%d%d%d=1%d%d%d\n" ,
    stk[2].a,stk[1].a,stk[0].a,
 &nbs......

阅读全文(2479) | 评论:0

继承问题(论坛)(2007-04-30 22:23:00)

摘要:论坛上网友题的问题: // 原帖如下 地址:http://www.programfan.com/club/showbbs.asp?id=229171
class MyError
{
private:
    const char* const m_msg;
public:
    MyError(const char* const msg)
        : m_msg(msg)
    {
    }

    virtual void Report(void) const
    {
        cout << m_msg << endl;
    }
};

class MySubError : public MyError
{
public:
    MySubError(const char* const msg)
        : MyError(msg)
    {
    }

    void Report(void) const
&nbs......

阅读全文(2731) | 评论:0

acm拼凑春联(2007-04-30 21:35:00)

摘要:拼凑春联  
Problem description
春节到了,春联是必不可少的东西^_^。众所周知,一幅对联的“上联”和“下联”是对偶(也叫对仗)的。例如:上联:九州雨顺千山绿下联:六合风调万户丰 BluePoint不喜欢已有的春联组合,所以此人想从已知的佳句中找出两句对偶的,组合出一些新的春联^_*。图书馆有一个“名句文库”,BluePoint想知道其中的名句一共可以拼凑出多少组不同的春联,请您帮帮忙,好吗?为了简化问题,BluePoint只选择七个字的佳句,并把它们的形式化成了字母(按意群将句子分组、断开)。例如“鲲鹏展翅乾坤大”可化为“AABBCCD”,也可以化为“YYQQZZH”,即字母只起显示结构的作用,与句子内容无关。两个句子按照字母的连续性分段后,如果各成分的字数依次相同,则这两个句子对偶。例如:例如“QBLLLDE”和“DEZZZBF”,将第一句按照字母的连续性分为5段:Q、B、LLL、D、E,每段长度分别为1、1、3、1、1,而第二句经过断句后,各段的长度也分别为1、1、3、1、1,因此这两个句子对偶。注:“AABCCCD”和“EEFBBBE”这类句子也算作对偶:第二个句子中两次出现“E”,但“E”是断开的,所以断句情况仍为:2、1、3、1。由于字母只用来突出结构,所以如果出现两次同样的字母串,则它们表示的春联内容不相同,当然,它们是对偶的。  
Input
第一行,一个整数N,2≤N≤100000 以下N行,每行都有一个由七个大写字母组成的字符串,代表一个佳句。  
Output
一个整数:这些佳句可以拼凑成的对联的种类数。这个整数占一行。  
Sample Input
5
ABCCCDA
LLLMNNO
DEZZZBF
AAABCCD
KKKXPPQ  
Sample Output
4
 
Judge Tips
“ABCCCDA”和“DEZZZBF”两句形式相同,可以组成1种春联。 “LLLMNNO”、“AAABCCD”和“KKKXPPQ”形式都相同,任取两个共可组成3种春联。综上所述,答案为4。  
Problem Sou......

阅读全文(3625) | 评论:1

关于C的反面文章(2007-04-30 12:30:00)

摘要:现在,有很多C/C 程序员总是自命不凡,看不起其他开发人员。其实,或许别人更看不起他呢!   学生时代,我也曾醉心于C/C ,但时至今日,始终无法写出无懈可击的C 代码,所以我始终认为我不会C/C 。这些年,我一直在寻找编写C 代码的最佳模式。但是,老实说,我还没有见到过哪个称得上高手的C 程序员,也没有见到过写得Very good的C/C 代码。C/C 代码总是丑陋不堪,BUG丛生!   我用C语言编程已经超过20年了。我写过C语言的编译器、C语言的调试器、用C开发的其他语言、游戏、客户端程序和服务器程序,你说吧!还有什么是我没写过的。还有我的书架上充斥着折了角的K&R和Steele的书。我太了解C语言了,但是,我讨厌他。十分讨厌!   当我读到一篇博客,题目是“为什么每个程序员都应该学习C语言?”时,我真是鸡皮疙瘩满地。如果你真的是个专业的程序员的话,你肯定觉得这是个天大的笑话,尽管作者的本意也许不是这样的。这篇反驳的文章有点意思,但是还是没有抓住本质。所以我展开了说一下。有以下5个原因来说明,为什么那些会C语言,并且使用C语言的程序员,现在不但应该去用别的语言,而且应该忘记他们学习C语言过程中的那些烦人的东西。   1、内存分配   仅仅关于这一点我就能写整整一篇文章了,也许能写一本书,甚至还有可能写出能够塞满图书馆技术书籍那块,那么多的内容。内存分配和存储单元分配的存在确确实实是个大麻烦。你要不就是分配太少的内存不够用,要不就是分配了太多内存浪费掉。这里的问题就是:怎么把它初始化为零呢?还是干脆就不初始化它。但最挠头的步骤还是释放内存。所有已有的工具包都会帮助你确认,你是否已经释放了之前分配的每一位的内存,在释放完之后是否永远不使用它,并且会阻止你,永远不要释放它第两次。更严重的是,分配内存和释放内存在C语言中都是很慢的,非常慢。使用内存分配时,要考虑的各种特殊情况,我真是连想都不愿意去想,只要问题(对象)的大小合适,我更愿意使用栈空间或者事先分配的结构空间。如果这么做的话,我就有更值得烦恼的事了。话说回来,发明垃圾处理器那人真应该得诺贝尔奖。   2、多线程   我过去是喜欢C语言的,真的。直到我开始用C开发并维护多线程的服务器。在为连接相冲突的线程保护数据方面,C语言没有为程序员提供那怕一点点的帮助。你在使用单线程的日子里获得的每......

阅读全文(2492) | 评论:0

程序员和工程师的故事(2007-04-29 13:40:00)

摘要:一天,一个程序员和一名工程师同乘一架飞机而且座位正好相邻,这个程序员问工程师是否想玩一个有趣的游戏。可是工程师正疲倦不堪,只想睡觉,于是他礼貌地拒绝了这个提议。 可是程序员紧逼不放还说这个游戏非常简单:“我问一个问题,如果你回答不出来就给我5美元,然后你再问我一个问题,如果我回答不出来,就给你5美元,如何?”可是工程师还是礼貌地拒绝了,并且准备睡觉。程序员有点儿着急:“好吧!那这样吧,如果你不知道答案你给我5美元,但是如果我不知道答案,那我给你50美元,怎么样?” 这下工程师有了点儿兴趣,于是同意开始游戏。 程序员首先发问:“从地球到月球的距离有多远?”工程师挠挠头,给了程序员5美元。 现在,轮到工程师了。他问程序员:“什么东西用3条腿上山,用4条腿下山?”程序员瞠目结舌地看着他,然后拿出了他的笔记本电脑,开始查阅他所有的资料。一个小时后,他叫醒了工程师,给了工程师50美元。工程师礼貌地接过50美元,然后转过头想接着睡觉。 “嘿!答案到底是什么呀?”程序员有点儿不高兴。工程师一言不发,拿出5美元给了程序员,然后倒头便睡。......

阅读全文(2259) | 评论:0

程序员可以来看看(2007-04-29 13:06:00)

摘要:(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)

作者:金蝶中间件公司CTO袁红岗

不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。

  1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。

  2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

  3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

  4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。

  5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中......

阅读全文(1911) | 评论:0

C++标准阅读笔记(2007-04-27 22:13:00)

摘要:// 以下是个人阅读C++标准时记录的一些容易被忽略的语法
// 希望对你有所帮助。
1,换页符 '\f' 如何换页 :
2,在常量后面加上 L或者U表示长整形或者无符号整形,在 int long长度不同时很有必要
   但是加上可以提高程序的可移植性 long a = 23L;
3,浮点型可以处理三百多位的运算
4,不但变量有内存地址,函数同样也有,这里不了解
5,C ++可以这样输出字符串 :cout<<"skdfjsdf\n"
      "ksdfjlksdfjsdfs\n"
      "ksdfjssssssssdfsdfsdfjsdlfs\n";
6,常量类型的变量不能作为左值
7,移位运算,变量本身不变如 int i = 2; j = i<<2; i 没变 9,a = a + 1 与 a += 1 区别,前者对 a 计算两次而后者只计算一次
10,cout<<endl; 与 cout<<'\n';的区别是前者在输出换行符后更新输出流而后者只输出个换行符
    当然这个区别不是在所有的编译器中都有体现
11,在C++中 main() 默认返回整形值,默认有两个参数
12,我晕 main()函数在VC++6.0中允许递归调用
13,可变函数参数: void test(int,...);
17,良好的程序设计风格,每个函数完成一个特定的功能
18,无名形参 void test(int i,int); // 调用时必须给出无名形参所在值 test(2,4);
19,C++支持默认参数
20,内联函数,C++标准没有明确说明必须在调用之前声明内联函数,使用内联函数有两种情况
    取带宏或者把一个大函数分成多个内联函数,这样可以改进程序的可读性
21,之所以函数可以递归是因为,每当函数被调用时都会把参数和他的局部数据对象拷贝到一块
    专有的内存区......

阅读全文(5399) | 评论:5

C++初学者代码(2007-04-27 12:59:00)

摘要:// 以下是自己当初学 C++ 时的代码,有点象草稿纸,希望对初学者有所帮助:
// 所有函数均在VC下编译运行: // 1,特殊函数的调用顺序问题
#include <iostream>
using namespace std; void test();
class mycls{
public:
 mycls(){
  cout<<"construct mycls"<<endl;
 }
 ~mycls(){
  cout<<"destroy mycls"<<endl;
 }
}; class myexp{
public:
 myexp(){
  cout<<"construct myexp"<<endl;
 }
 ~myexp(){
  cout<<"destroy myexp"<<endl;
 }
 myexp(myexp& t){
  cout<<"copy construct myexp"<<endl;
 }
 /*  注释掉拷贝构造函数结果是:
  construct mycls
  in try
  in fun test()
  construct myexp
  destroy myexp
  destroy mycls
  in catch
  destroy myexp
  Press any key to continue . . .
  不注释掉结果是:
  ......

阅读全文(6988) | 评论:0

神秘的百幕大三角(2007-04-26 11:53:00)

摘要:世界难解之迷。地球的黑洞-百幕大三角区! 在本世纪海上发生的神秘事件中,最著名而以最令解的,当属发生在百慕大三角的一连串飞机、轮船失踪案。据说自从1945年以来,在这片海域已有数以百计的飞机和船只神秘的无故失踪。失踪事件之多,使世人无法相信其尽属偶然。所谓百慕大三角是指北起百慕大群岛,南到波多黎各,西至美国佛罗里达州这样一片三角形海域,面积约一百万平方公里。由于这一片海面失踪事件叠起,世人便称它为“地球的黑洞”、“魔鬼三角”。

1945年12月哦日,美国第十九飞行队的队长泰勒上尉带领人14名飞行员,驾驶着5架复仇者式鱼雷轰炸机,从佛罗里达州的劳德代尔堡机场起飞,进行飞行训练。泰勒是一名经验丰富的飞行员,有着在空中飞行2599小时的飞行记录,他的飞行技术对完成这样的训练任务应该是根本不成问题的。但当飞行的机群越过巴哈马群岛上空时,基地突然收到了泰勒上尉的呼叫:“我的罗盘失灵了!”,“我在不连接的陆地上空!”以后两个小时,无线电通信系统断断续续,但是还能显示出他们大致是向北和向东飞。下午4点,指挥部收到泰勒上尉的呼叫:“我弄不清自位置,我不知在什么地方。”接着电波讯号越来越微弱,直至一片沉寂。指挥部感到这事不大对头,立即派一架水上飞机起飞搜索。半小时后,一艘油轮上的人看见一团火焰,那架水上飞机坠落了。

在短短的6个小时,6架飞机,15位飞行员一下子都不见了。他们消失得莫名其妙。这件事使美国当局受到极大的震动,军方决心查个水落石出。次日,在广达600万平方公里的海面上,出动了300架飞机和包括航空母舰在内的21艘舰艇,进行了最大规模的搜索。搜索范围从百慕大到墨西哥湾的每一处海面,时间达5天之久,可仍没能找到那六架飞机的踪影。
**********************************************
多年来,人们对这次事件传说纷纭,百慕三海域也就随着这次事件的披露而出了名。然而,该地区无法解释的船只或飞机失踪事件,可以追溯到一9世纪中叶。

早在1840年,一艘名叫“洛查理”的法国货船航行到百慕大海面时,人们就发现船上食物新鲜如初,货物整齐无损,而船员却全部神秘地失踪了。

1872年,在亚速尔群岛以......

阅读全文(3102) | 评论:0

航天科学(2007-04-25 13:09:00)

摘要:航天科学
  一心想飞的人   很久以来,人类就在这个古老的地球上,默默地生,默默地死,没有离开过地球半步,他们把这个小小的星 球,作为自己的家乡,在上面经历了一番喜怒哀乐的情感历程之后,又把它作为自己最后的归宿地。
  然而,人类不是没有飞天的梦想。
  当他们看到飞虫们成群结队地在天空飞来飞去的时候,多么渴望,自己有那么一天,也能够飞上天空,去俯 视他们所生存的土地啊!
  当他们看到鸟类扇动有力的翅膀,唱着自己的歌谣,从这一块天空飞向另一块天空的时候,他们是多么羡慕 又是多么忌妒呵,他们依旧做着飞天的梦。
  这是一个古老而又永远年轻的梦,这个梦激励了一代又一代人,也鼓舞了一代又一代人,当无数岁月飘过远 山的时候,当无数努力化为美丽的泡影的时候,这个梦依旧没有成为灿烂的现实。
  到了公元1857年9月17日,这个梦落到了一个新出生的婴儿的灵魂深处,这个婴儿名字就叫康斯坦丁·齐奥尔 科夫斯基,命中注定,他的一生都与人类的飞天梦想结下了不解之缘。
  与所有的孩子一样,他健康茁壮地成长着。父亲是一位守林人,他稍大一点以后,就随父亲到森林中去玩耍 ,然而,他对飞翔在林中的鸟类是那样地感兴趣。
  有一次,父亲径自在前面走,他跟地后面,忽然,他看到一只美丽的鸫鸟从面前飞过,一边飞着一边还唱着 歌儿,他禁不住看呆了,他多么想也能飞上天,像鸫鸟那样呵!
  走了很远一段路以后,父亲回头一看,儿了不见了,这可把他吓坏了,他赶紧沿着来路往回找,儿子竟然还 站在那地方发呆,而且,两只手还像鸟的翅膀那样上下扇动着。
  齐奥尔科夫斯基进入了梦幻状态,尽管那只鸫鸟已经飞得不知去向,他却怎么也忘不了鸟儿飞翔的样子,他 好想飞。一直飞到九大之上去。
  他把自己的梦跟父亲讲了,父亲嘿嘿一笑,觉得这孩于有点傻呵呵的,但傻得可爱。父亲没有能够理解孩子 的这一梦想。
  后来,父亲又带着他到出间、地头去捉蚂蚱、逮蜻蜒。但齐奥尔科夫斯基最感兴趣的还是放风筝。
  他喜欢看风筝在天空迎风飘曳,好像自己的身体也像风筝一样,在天空中飞,但他讨厌那根牵制着风筝的细 丝,所以,每次放着放着,他都把细线给丢了,让风筝在大空中自由自在地飞。
  然而,命运跟他开了一个非常恶毒的玩笑,把他推向了一个苦......

阅读全文(3563) | 评论:0