天朝大学的“形象工程”依旧在继续,本身我们的《数据结构课程设计》就要搞完了,却还是要我们去机房上课。
没办法,就去机房“打酱油”吧……
可这酱油该怎么打呢,对了!
登录WEBQQ,和同学们玩“Q宠大乐斗”,可是不一会,一天“80点的体力值”就消耗完了。。接下来干神码呢?
呐,那就折腾Code吧……
于是,偶将我写的Code在机房的“瘟到死叉屁”上,用着古老的 VisualC++6.0 编译……
神奇的事件发生了, VC6.0 一堆错误提示,至于是什么提示我就不说了。
奇怪啦,我在 Ubuntu 下用 Codeblocks 编译是通过了的,在Win7下用DevC++编译也是通过了的。
额,对了,我还没有在 Visual C++ 里面调试过,为啥,因为我实在是比较讨厌 MS的 Visual C++ 这玩意儿!
让我我想想,我到底是哪里写的有问题?
看着那些错误提示……哦,我找到了问题所在 —— 这狗日的 Visual C++ 6.0 !
问题在这里,我先前的代码,对于数组是这样处理的(如下面例子):
int operate(int nqueen)
{
int queen[nqueen+1];
int safe[nqueen+1];
int rdo[2*nqueen+1];
int ldo[2*nqueen+1];
return 0;
}
目的是想实现自由控制数组的长度。
但是,在VC6.0这样古老的东西里面,这种做法是通不过的。
因为,在VC6.0里面(不晓得VS2008是否也是这样),数值的长度必须是 “ 常量 ” 也就是说,必须是一个“确定大小”。
但是,问题是——我想实现数组长度的自由控制,这可咋办呢?
其实也很简单,数组嘛,本身就和指针有着千丝万缕的联系,所以我的做法是 —— 直接分配内存空间。
所以我将上面部分代码修改成了如下方案:
int operate(int nqueen)
{
int *queen=(int *)malloc((nqueen+1)*sizeof(int));
int *safe=(int *)malloc((nqueen+1)*sizeof(int));
int *rdo=(int *)malloc((2*nqueen+1)*sizeof(int));
int *ldo=(int *)malloc((2*nqueen+1)*sizeof(int));
return 0;
}
我直接把数组当指针处理!
对了,我这里是用的 malloc 函数,这种 C语言 版的方式来实现内存的分配,当然,如果你对C++的 “ 数据流 ” 比较熟悉的话,也可以使用 new 来实现内存的分配。
好了,我这里用了指针的方式,所以调用这些 “ 数组 ” 的时候,你也要适当修改一下啦。
另外,想起那天 小邪 告诉,她看到了一个很NB的家伙,和我一样都是处理 “N皇后问题” ,还给了我一个链接。
我看了一下,也没什么不同,就是 “ 皇后座位 ” 的输出更加形象化一点啦。
行,让输出变得好看一点也很好实现,于是我小改了下输出部分就OK啦^_^
对了,修正版的完整代码如下:
#include
#include
#include
using namespace std;
int check(int i,int *queen,int *safe,int *rdo,int *ldo,int nqueen)
{
int j,k,su;
static int num=0;
for(j=1;j<=nqueen;j++)
{
if((safe[j]==0)&&(rdo[i+j]==0)&&(ldo[i-j+nqueen+1]==0))
{
queen[i]=j;
safe[j]=1;
rdo[i+j]=1;
ldo[i-j+nqueen+1]=1;
if(i>nqueen;
cout<
顺便罗嗦一句,按照我自己的解决方法,我的 Visual C++ 6.0 是真的可以在 Windows7 下运行呢,不信你看:
唉,MS的东西就是不符合 “ 标准 ”,说MS “ 阻碍社会进步 ” 也就算了,问题是还毒害了不少 “淫民群众”。
比如那个 IE6 …… 呐,还有我现在正在用的 Visual C++ 6.0,估计90%的天朝大学,都依然在使用 Visual C++ 6.0 教学 ……
呐,如果你是一个学习 C/C++ 的人,如果你想写出更加“标准“,更加“规范”的代码话。
那么 —— 请尽量少使用 Microsoft Visual C++ !
你胆真大,敢在win7里面用VC6,ClassView都打不开
好多人都不喜欢VC6,不过VC6有个很大的好处,就是运行快,同时开十个工程,机器都跑得动。再说,网上的很多资源都是VC6的,而且转换到VC.NET的工程不一定能编译得过
@C瓜哥 , VS2008生成一堆无用的代码,难得删啊,其实我尽量按标准写,这样不涉及GUI的情况下,VC写的代码,在Linux下编译也没什么问题,MS真操蛋,自家的东西哦也打架……不过我安了VA插件的说
打不了酱油就打瞌睡嘛
好厉害哦。。。看不懂
我用C-FREE。VC的话很少用!
@阿鼎 , 我用vi 不过用codeblocks比较多
原来是没事干的时候才会折腾code
@Louis Han , 哪里,鹚是好孩子!
Hi!
俺来了~
俺没学过C++
……
@Kupid , Hi,我也不知道java
@Mucid , 话说~你们现在应该放寒假了吧?