有很多算法用java, 不能或者很难实现。

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:03:48
有很多算法用java, 不能或者很难实现。

就已经典的N皇后问题(在N*N棋盘上放N个皇后,使之互不攻击,求有多少种解法).

用C语言随便一写就是:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

long sum=0,upperlim=1;

void test(long row, long ld, long rd){

if (row != upperlim){
long pos = upperlim & ~(row | ld | rd);
while (pos){
long p = pos& -pos;
pos -= p;
test(row+p, (ld+p)<<1, (rd+p)>>1);
}}
else
sum++;
}

int main(int argc, char *argv[])
{
time_t tm;
int n=8;

if(argc!=1)n=atoi(argv[1]);
tm=time(0);
if((n<1)||(n>32)){
printf(” heh..I can’t calculate that.\n”);
exit(-1);}
printf(”%d Queens\n”,n);
upperlim=(upperlim<<n)-1;

test(0,0,0);
printf(”Number of solutions is %ld, %d seconds\n”, sum,(int)(time(0)-tm));
}

在2.3G的P4上运行结果是:

E:\USBTEST\mycode>eightqueen

话不要乱说,在c里面可以用的算法在java里面实现只会更加简单!你说效率低就效率低呗,从来没人说java效率高的!

LZ您对编程的了解貌还不够深入。
JAVA是解释型语言,C和C++是编译型语言,从效率上来说的话他们本来就不是同一个档次——解释型语言比编译型语言要慢。
但是从算法上来说,C++能实现的,JAVA乃至您所接触过的所有语言都能实现。不同的方面在于效率和代码的长度。

LZ要是不服气的话可以在网上搜索所有您想要的各种JAVA算法,都能找到。不过效率的话……刚才已经说了……

补充一点:LZ您说很难实现,这个本人同意,但是本人不同意您说的“不能”实现

刨坑 用锆和用锄头 是一样的
java什么都能实现
就是效率的问题
java和c++各自有擅长的领域
C++也能做web开发 但是 显然 他不是用来干这个的

Java是面向对象的,C是面向过程的,简单片面点来说,Java编程针对一个“人”,C针对“人”的一根“头发”、一个“手指”来编程;
用一根“头发”可以解决的问题,C就用一根头发,决不加其它的东西,而Java要先弄出一个“人”,再由“人”来引出“头发”,这个效率,很明显了,java不如C,可是,C能做到的,java就一定也能做到,呵呵 ,“一根头发”可以完成的事,“一个人”肯定可以完成,因为“这根头发”就在“这个人”的身上。

一种语言能占有多少市场份额就说明其有多少价值....

楼主显然没怎么用过java,又不是依靠效率出名的