java作业不能运行_java作业不能运行

import java.util.Scanner;

public class zhsh_nhh extends Thread{

/**

* @param args

*/

private int n,start,end;

public int q;

public int[][] zhshQ=new int[10000][22];

int[] b=new int[22];

public zhsh_nhh(int x,int start,int end)

{

this.q=0;

this.start=start;

this.end=end;

this.n=x;

}

public void out(int ans)

{

for(int i=1;i<=n;i++)

{

for(int j=1;j<=n;j++)

if(zhshQ[ans-1][i]==j)

System.out.print('q');

else System.out.print('*');

System.out.print('\n');

}

}

public void dfs(int k,int b[])

{

if(k>n)

{

q++;

// System.out.println(q+"ddddddddddddd");

for(int l=1;l<=n;l++)

zhshQ[q][l]=b[l];

return ;

}

int i,j;

for(i=1;i<=n;i++)

{

for(j=1;j

{

if(i==b[j])

break;

if(Math.abs(k-j)==Math.abs(i-b[j]))

break;

}

if(j

continue;

// System.out.print("草泥马"+i);

b[k]=i;

dfs(k+1,b);

}

}

public void run()

{

//System.out.print("开始运行我了");

for(int i=start;i<=end;i++)

{

b[1]=i;

dfs(2,b);

}

}

public static void main(String[] args) throws InterruptedException {

// TODO Auto-generated method stub

Scanner zhshinput=new Scanner(System.in);

int zhshn=zhshinput.nextInt();

//并行解法

//long k=0;

long begin,end,endend;

//并行解法

zhsh_nhh t1=new zhsh_nhh(zhshn,1,zhshn/2);

zhsh_nhh t2=new zhsh_nhh(zhshn,zhshn/2+1,zhshn);

begin=System.currentTimeMillis();

t1.start();

t2.start();

t1.join();

t2.join();

end=System.currentTimeMillis();

//串行解法

zhsh_nhh t=new zhsh_nhh(zhshn,1,zhshn);

long b=System.currentTimeMillis();

t.start();

t.join();

endend=System.currentTimeMillis();

System.out.println("并行的时间为");

System.out.println(end-begin);

System.out.println("串行的时间为");

System.out.println(endend-b);

System.out.println("加速比为:"+(endend-b)*1.0/(end-begin)*1.0);

System.out.println("共有"+t.q+"种解法");

int x;

int ans;

System.out.println("请输入要求解的解方法:\n 1串行解法\n 2:并行解法\n 0:退出");

x=zhshinput.nextInt();

while(x>0)

{

System.out.println("请输入要求第几种解方法:");

ans=zhshinput.nextInt();

if(ans>t.q)

System.out.println("输入量错误的数据");

if(x==2)

{

if(ans<=t1.q)

t1.out(ans);

else

t2.out(ans-t1.q);

}

else if(x==1)

{

t.out(ans);

}

else System.out.println("输入了错误的数据\n");

System.out.println("请输入要求解的解方法:\n 1串行解法\n 2:并行解法\n 0:退出");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值