博文
应用全排序算法解决一道逻辑推理题(2007-03-03 16:14:00)
摘要: 朱金灿
全排序算法就是列举一些字符的所有排列顺序的一种算法,比较典型的采用递归法。下面是一种简单的全排序算法。
void Swap(char* a, char* b)
{// 交换a和b
char temp;
temp = *a;
*a = *b;
*b = temp;
}
void Perm(char list[], int k, int m)
{ //生成list [k:m ]的所有排列方式
int i;
if (k == m) {//输出一个排列方式
for (i = 0; i <= m; i++)
putchar(list[i]);
putchar('\n');
}
else // list[k:m ]有多个排列方式
// 递归地产生这些排列方式
for (i=k; i <= m; i++) {
Swap (&list[k], &list[i]);
Perm (list, k+1, m);
Swap (&list [k], &list [i]);
}
}
int main(int argc, char *argv[])
{
char s[6]="01234";
Perm(s,0,4);
return 0;
}
算法作者:拉格浪日,来源:燕赵草叶风 2006-7-1
下面我简单地应用这个算法解决一道推理问题。该推理是这样的:
一天晚上,一对已婚夫妇,和他们的儿子女儿在家里发生了一起......
大学老师列传(2007-02-06 22:08:00)
摘要:
工作了,无聊的时候,大学生活里的浮光片影便浮现在眼前,仿佛是在昨天发生一样。出于怀念,我特写下此文。文章尽量做到以事实为依据,但也夹杂了我个人一些感情色彩,欢迎大家点评。版权所有,转载者请注明出处。
林老师
这是我们那一届学生接触最早的计算机老师。他教我们计算机文化基础。想当年林sir也是个厉害角色。当时我们上机不安份,玩些游戏,干些见不得老师的勾当。林sir发火了:“上机时可以熟悉一下word,powerpoint,可以练习一下dos命令,写个批处理文件,可你们......我告诉你们,计算机学得最好的不是你们信工和计科,而是工程、材化那些院系,关键是人家脚踏实地......”一席话说得我们面红耳赤。
黄老师
说信工的事不提黄老师真是太不给黄老师面子了。大一时黄老师给我们上思想道德修养。本来这种课会给人一种枯燥的印象,不过现在回想起来也有一些有趣的插曲。记得有一次黄老师在课堂上放映《刺激1995》(又译《肖申克的救赎》、《月黑高飞》)。本来说好这节课放映上半部,下节课放映下半部。谁知到下节课黄老师不放映,于是立即招致堂下一片抗议声。
期末时黄老师给我们布置的作业是《大学四年规划》。不知现在她有没有布置这样的作业呢?......
《深入浅出MFC》的一个例子的一点问题(2007-01-14 15:33:00)
摘要: 朱金灿
《深入浅出MFC》在第二章中说:虚函数表的内容是依据类中的虚函数声明次序,一一填入函数指针。派生类会继承基类的虚函数表(以及其它可以继承的成员),当
我们在派生类中改写虚函数时,虚函数表就受了影响:表中元素所指的函数地址
将不再是基类的函数地址,而是派生类的函数地址。
测试程序:
#include <iostream.h>
#include <stdio.h>
class ClassA
{
public:
int m_data1;
int m_data2;
void func1() { }
void func2() { }
virtual void vfunc1() { }
virtual void vfunc2() { }
};
class ClassB : public ClassA
{
public:
int m_data3;
void func2() { }
virtual void vfunc1() { }
};
class ClassC : public ClassB
{
public:
int m_data1;
int m_data4;
void func2() { }
virtual void vfunc1() { }
};
void main()
{
cout << sizeof(ClassA) << endl;
cout << sizeof(ClassB) << endl;
cout << sizeof(ClassC) <......
《三国演义》读后感两则(2006-10-04 16:58:00)
摘要: 曹操是个好领导
近读《三国演义》,对比刘备、曹操和孙权三人,觉得曹操的领导才能最高。东汉末年诸侯混战之间的胜负在很大程度上是由用人正当与否有很大关系的。我认为曹操之求才若渴,孙刘亦不及也。对比蜀魏吴三国的兴衰你可以发现一个有趣的现象,蜀国自失去诸葛亮便开始衰落,吴国自周瑜和鲁肃之后也开始走下坡路,而曹魏却由司马懿撑起了大旗,而司马懿却是由曹操发现的,这难道是偶然的吗?曹操真正做到了爱才如命,即使对敌将如关飞和赵云,他也不忍下杀手。正是曹操极其开明的用人政策,魏国一直处于人才鼎盛的兴旺时期,从而使得在三国鼎立的局面下一直保持对蜀吴两国的攻势。至于诸葛亮的北伐,不过是以主动进攻求取生存的策略。
诸葛亮是个悲剧英雄
鲁迅先生在《中国小说史略》这样评论诸葛亮:状诸葛之多智而近妖。我看完全书也有这个感觉。但这个近妖的诸葛亮也打过不少败仗,六出祁山一无所获便是。我相信近妖的诸葛亮是知天命的,而北伐是逆天而行的。为何这样说?因为曹丕纵然比不上曹操,当个守成之君还是够资格的,司马懿足智多谋,堪当大用。而蜀国的刘禅比曹丕差了不止一截。从民心方面,诸侯混战,百姓普遍渴望安宁,主动挑器战争者必然背负骂名,况者诸葛亮进攻的是曹操多年经营的基地,民心不在......
比较三种数据库系统的命令行备份和恢复工具(2006-08-29 23:59:00)
摘要: 朱金灿
最近用VC做了一个程序,需要调用常用数据库系统的备份和恢复功能。下面谈谈我这方面的体会。
Kingbase的备份和恢复工具(我指的是命令行工具)做得实在不好。开始看了帮助文档我觉得备份命令还是很清晰的,但用起来就不是那么回事了。下面我用例子来说明:
打开开始菜单的运行对话框,输入Kingbase的备份命令行:
sys_dump.exe -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST
单击确定后出现一个警告对话框:Windows找不到sys_dump.exe,请确定文件名是否正确......
正确的应是在运行对话框输入:
"C:\program file\Basesoft\KingbaseES\4.1\bin\sys_dump.exe" -h 168.168.168.59 -p 54321 -U SYSTEM -W 828707 -f E:\dumpfile.dmp TEST
在运行对话框输入“cmd”打开命令提示符界面,输入sys_dump.exe -h 168.168.168.59 -p ......
对刘忠德批超女的法律思考(2006-08-29 23:47:00)
摘要: 刘忠德提议政府取缔超女。我不去讨论超女的利弊,只想探讨取缔这一方式是否恰当。
我记得一位经济学家曾经说过这样一句话:对政府的要求就是只允许它干法律允许它干的事,这样才能规范政府的行为,防止政府侵犯人民的权利,对于个人则可以干法律不禁止的事,这样才能最大程度地激发社会的创造力。超女毕竟是民间的产物,不宜轻言取缔。有人说:政府就不能用取缔手段吗?政府当然可以用取缔,但那是针对黄赌毒等犯罪行为。我想稍有判断力的人都会明白超女和黄赌毒不是一回事。
超女的存废不应由政府决定,因为那是社会精神生活的范畴。政府可以大力倡导高雅文化,却不可以棒杀其它文化。这正如吸烟一样,政府可以大力宣传吸烟的危害,却不可以说禁止吸烟。
也许超女真是会让一部分青少年玩物丧志,荒废学业。即使是这样,取缔它,从个案上说是做对了,从长远来说却会扼杀民间的生机和活力。
......
使用穷举法解决0—1背包问题(2006-07-09 12:06:00)
摘要: 朱金灿
问题描述:有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,但选中物品的价值之和最大。
设n个物品的重量和价值分别存储于数组w[ ]和v[ ]中,限制重量为tw。考虑一个n元组(x0,x1,…,xn-1),其中xi=0 表示第i个物品没有选取,而xi=1则表示第i个物品被选取。用枚举法解决背包问题,需要枚举所有的选取方案,而根据上述方法,我们只要枚举所有的n元组,就可以得到问题的解。
显然,每个分量取值为0或1的n元组的个数共为2n个。而每个n元组其实对应了一个长度为n的二进制数,且这些二进制数的取值范围为0~2n-1。因此,如果把0~2n-1分别转化为相应的二进制数,则可以得到我们所需要的2n个n元组。
下面是我据此思路编的一个小程序。
#include <stdio.h>
#include <math.h>
#define MAX 100 // 限定最多物品数
/*将n化为二进制形式,结果存放到数组b中*/
void conversion(int n,int b[MAX])
{
int i;
for(i=0;i<MAX;i++)
{
b[i] = n%2;
n = n/2;
if(n==0)break;
}
}
void main()
{
int i,j,n,b[MAX],temp[MAX];
float tw,maxv,w[MAX],v[MAX],temp_w,temp_v;
printf("please input n:\n");
sca......
C 语言程序设计第6章习题答案(一)(2006-06-14 16:44:00)
摘要:
谭浩强的《C程序设计》第六章的两道习题答案。
6.3求Sn=a+aa+aaa+…+aa…a(n个a位数)的值并显示Sn,其中a、n由键盘输入。例如:a=1,n=3,则Sn=1+11+111=123;
a=2,n=4,Sn=2+222+2222=2468。
#include <stdio.h>
#include <math.h>
long Calculate(int a,int n)
{
int temp = 0;
int sum =0;
for(int i=0;i<n;i++)
{
temp = temp + a*int(pow(double(10),double(i)));
sum = sum +temp;
}
return sum;
}
int main(void)
{
printf("%d\n",Calculate(2,4));
return 0;
}
改进设想:大数的存诸问题。比如结果超出了长整型的范围。
6.14 打印出下列图案。
*
* * *
* * * * *
* * * * * * *
* * * *......
博客主人简介(2006-05-25 13:21:00)
摘要:姓名:***
网名:clever101
网名由来:clever由来:因为本人比较苯,所以取个名字希望自己变得聪明些。同学奇之。我说:你取个网名叫stupid才令人奇怪呢。101的由来:郭沫若给北京101中学题写校名时这样说:100分还不够,要考101分。我不是分数主义者。我是以此激励自己不断进取。
座右铭:探索比到达更可贵。
梦想:梦见有一天我一觉醒来,打开电脑,发现里面所有软件都是自己编的,包括操作系统。
兴趣:长跑,看足球,读书(名著、各种电脑书籍、传记),电影(尤爱科幻电影),到技术论坛发帖(在google搜索clever101可以搜到我发的幼稚的帖子),,写些短文章。
计算机特长:略懂C、C++,会用VC编一些简单的程序。(越学越感到自己的不懂的东西还很多)
院校:CUG
趣事:
1.想通过ICQ交一些外国朋友来锻炼自己的口语。加了一些好友后我对所有的人狂喊:hello.无奈没人搭理我。于是我想尽办法来吸引别人的注意。我想到一个自认得意的办法:
我对一个凭名字来判断是女的网友说:
last night I met the God.The God told me:tomorrow you will meet a Angell in ICQ.
I want to know whether you are the Angell.
结果对方的头像一闪一闪的。我大喜过望。但最好......还是没有和我说话。
2.在msn上和别人用英语聊天。大家聊起足球。对方问我最喜欢哪个俱乐部。本来我最喜欢巴萨的。无奈我不会拼写巴塞罗那这个单词。其实我也知道对方也是本国人。但我坚持使用英语。我只好说:Real Madrid。她说:I guess you are a prety girl. 我说:No,I am a handsome boy.
她说:ha ha......
......
用指向指针的指针的方法对n个整数排序并输出(2006-04-14 15:14:00)
摘要:一道编程题目:用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。整数和n在主函数中输入,最后在主函数中输出。
我对该题的理解是:用交换地址的办法来达到交换元素的目的。
#include <stdio.h>
#include <malloc.h>
void Sort(int **p, int times)
{
int *temp;
int i=0;
int j=0;
for (i=0; i<times-1; i++)
{
for (j=i+1; j<times; j++)
{
/*当某元素大于它后面的元素,交换它们的地址*/
if (**(p+i) > **(p+j))
{
temp = *(p+i);
*(p+i) = *(p+j);
&nbs......