java前台代码算法 java开发前台

怎么用java代码实现开平方算法?

这是我应聘时写的算法代码,运行成功:

创新互联建站专业为企业提供洛江网站建设、洛江做网站、洛江网站设计、洛江网站制作等企业网站建设、网页设计与制作、洛江企业网站模板建站服务,十年洛江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

//这是用java编写的一个求2的平方根的程序,精确度可通过修改weishu参数来改变

public class app

{ //用二分法求2的平方根

public static void main(String args[])

{

int a[],b[],s[],d[],c[],ss[];

int i,j,k;

a=new int[1000];

b=new int[1000];

s=new int[1000];

d=new int[1000];

c=new int[1000];

ss=new int[1000];

boolean jingque;

jingque=true;

a[0]=b[0]=2;

a[2]=b[2]=1;

a[1]=4;

b[1]=5;

int weishu=200;//定义循环次数

for(i=0;i1000;i++)

s[i]=0;

for(k=0;kweishu;k++)

{

hanshucheng.cheng(b,b,s);

j=s[0];

while (s[j]=2)

{

hanshuadd.add(a,b,c);

hanshuchu.chu(d,c);

hanshucopy.copy(ss,b);

hanshucopy.copy(b,d);

hanshucheng.cheng(b,b,s);

j=s[0];

// for(i=0;i=s[0];i++)

//System.out.println("s["+i+"]="+s[i]);

}

hanshucopy.copy(a,b);

hanshucopy.copy(b,ss);

}

for(i=a[0];i=1;i--)

System.out.print(a[i]);

System.out.print("左边计算到"+a[0]+"位\n");

for(i=b[0];i=1;i--)

System.out.print(b[i]);

System.out.print("右边计算到"+b[0]+"位\n");

for(i=a[0],j=b[0];jingque==true;i--,j--)

if(a[i]==b[j])

System.out.print(a[i]);

else

jingque=false;

System.out.print("精确到"+(a[0]-i-1)+"位\n");

}

}

class hanshucheng

{

public static void cheng( int a[],int b[],int s[])//定义两数相乘的函数

{

int flag=0,flag1=0;

int number=b[0];

int c[]=new int[1000];

int i,j,k,u;

for(int i1=0;i11000;i1++)

s[i1]=0;

for(i=1;i=number;i++)

{

for(int i1=0;i11000;i1++)

c[i1]=0;

for(j=i,k=1;jnumber+i;j++,k++)

{

c[j]=(a[k]*b[i]+flag)%10;

flag=(a[k]*b[i]+flag)/10;

}

if (flag!=0)

{

c[j]=flag;

flag=0;

j=j+1;

}

c[0]=j-1;

//for(k=1;k=c[0];k++)

//System.out.println("c="+c[k]);

for(k=1;k=c[0];k++)

{ u=s[k];

s[k]=(u+c[k]+flag1)%10;

flag1=(u+c[k]+flag1)/10;

}

if(flag1!=0)

{

s[k]=flag1;

k=k+1;

flag1=0;

}

s[0]=k-1;

// for(k=0;k=s[0];k++)

//System.out.println(s[k]);

}

}

}

class hanshuadd

{

public static void add(int a[],int b[],int c[])//定义两数相加的函数

{

int flag=0;int i,j,k;

int a1[]=new int[1000];

for(i=1;i=b[0];i++)

a1[i]=0;

for(j=b[0]-a[0]+1,k=1;j=b[0];j++,k++)

a1[j]=a[k];

//for(k=0;k=j;k++)

//System.out.println("a1="+a1[k]);

for(i=1;i=b[0];i++)

{

c[i]=(a1[i]+b[i]+flag)%10;

flag=(a1[i]+b[i]+flag)/10;

}

if(flag!=0)

{

c[i]=flag;

i=i+1;

flag=0;

}

c[0]=i-1;

}

}

class hanshuchu

{

public static void chu(int d[],int a[])//定义任一数除以2的函数

{

int flag=0,i;

for(i=a[0];i=1;i--)

{

d[i+1]=(flag*10+a[i])/2;

flag=(flag*10+a[i])%2;

}

if(flag!=0)

d[1]=5;

if(d[1]==0)

for(i=1;i=a[0]+1;i++)

d[i]=d[i+1];

d[i]=0;

d[0]=a[0]+1;

}

}

class hanshucopy

{

public static void copy(int a[],int b[])//定义

{

int i;

for(i=0;i=b[0];i++)

a[i]=b[i];

while (i1000)

a[i++]=0;

}

}

JAVA 求助一段算法代码!求大神~~~~~

看完你的,自己写了一个。很简陋。你的改动比较大。一时半会改不了。

你的写好了。改动有点大。鼠标事件mousePressed()中实现移动。由于时间没做优化,主要处理方法是判断当前listenerPanel的上下左右是否存在上面是0的listenerPanel,存在则交换上面数字及背景颜色。自己可以优化下里面代码,

思路:

PuzzleTile jb = (PuzzleTile) e.getSource();

for(int i=0;ilistenerPanel.length;i++){

if(jb.equals(listenerPanel[i])){

//判断当前listenerPanel[i]上下左右是否存有listenerPanel的上面数字是0的,如果存在

则把当前的listenerPanel[i]的背景颜色及数字与上面是0 的交换。判断周围是否存在有点及是否交换有点复杂。

}

}

代码修改如下:少量注释

import java.awt.Color;

import java.awt.Font;

import java.awt.FontMetrics;

import java.awt.Graphics;

import javax.swing.*;

public class PuzzleTile extends JPanel{

private String tileNumber;

public PuzzleTile(int number) {

super();

if (number == 0) {

this.setBackground(Color.white);

}

else {

this.setBackground(Color.darkGray);

}

this.tileNumber = "" + number;

}

public void setTitleNumber(int tileNumber){//设置上面的数字

this.tileNumber=tileNumber+"";

}

public int getTitleNumber(){//获得上面的数字

return Integer.parseInt(tileNumber);

}

public void paintComponent(Graphics graphics) {

Font a=new Font("Arial",Font.BOLD,30);

graphics.setFont(a);

graphics.setColor(Color.white);

super.paintComponent(graphics);

FontMetrics b=graphics.getFontMetrics(a);

int c=b.stringWidth(tileNumber);

int d=b.getAscent();

int e=getWidth()/2-c/2;

int f=getHeight()/2+d/2;

graphics.drawString(tileNumber,e,f);

}

}

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.ArrayList;

import java.util.Random;

public class SlidingPuzzle extends JFrame implements MouseListener

{

public static void main(String[] args){

SlidingPuzzle frame=new SlidingPuzzle();

frame.TestPanel();

frame.setTitle("Numeric Sliding Puzzle");

frame.setSize(400,400);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

PuzzleTile[] listenerPanel;

public void TestPanel(){

Container container=getContentPane();

container.setLayout(new GridLayout(3,3,5,5));

listenerPanel=new PuzzleTile[9];

ArrayListInteger myList=new ArrayListInteger();

int m;

for(int i=0;i9;i++){

m=new Random().nextInt(9);

if(!myList.contains(m))

myList.add(m);

else

i--;

}

for(int i=0;ilistenerPanel.length;i++){

listenerPanel[i]=new PuzzleTile(myList.get(i));

container.add(listenerPanel[i]);

listenerPanel[i].addMouseListener(this);

}

}

public void mousePressed(MouseEvent e){

PuzzleTile jb = (PuzzleTile) e.getSource();

int m=jb.getTitleNumber();

//依次判断每一个listenerPanel上下左右是否存在上面数字为0的listenerPanel

if(jb.equals(listenerPanel[0])){

if(listenerPanel[1].getTitleNumber()==0){

listenerPanel[0].setBackground(Color.white);

listenerPanel[0].setTitleNumber(0);

listenerPanel[1].setTitleNumber(m);

listenerPanel[1].setBackground(Color.darkGray);

}

if(listenerPanel[3].getTitleNumber()==0){

listenerPanel[0].setBackground(Color.white);

listenerPanel[0].setTitleNumber(0);

listenerPanel[3].setTitleNumber(m);

listenerPanel[3].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[1])){

if(listenerPanel[0].getTitleNumber()==0){

listenerPanel[1].setBackground(Color.white);

listenerPanel[1].setTitleNumber(0);

listenerPanel[0].setTitleNumber(m);

listenerPanel[0].setBackground(Color.darkGray);

}

if(listenerPanel[2].getTitleNumber()==0){

listenerPanel[1].setBackground(Color.white);

listenerPanel[1].setTitleNumber(0);

listenerPanel[2].setTitleNumber(m);

listenerPanel[2].setBackground(Color.darkGray);

}

if(listenerPanel[4].getTitleNumber()==0){

listenerPanel[1].setBackground(Color.white);

listenerPanel[1].setTitleNumber(0);

listenerPanel[4].setTitleNumber(m);

listenerPanel[4].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[2])){

if(listenerPanel[1].getTitleNumber()==0){

listenerPanel[2].setBackground(Color.white);

listenerPanel[2].setTitleNumber(0);

listenerPanel[1].setTitleNumber(m);

listenerPanel[1].setBackground(Color.darkGray);

}

if(listenerPanel[5].getTitleNumber()==0){

listenerPanel[2].setBackground(Color.white);

listenerPanel[2].setTitleNumber(0);

listenerPanel[5].setTitleNumber(m);

listenerPanel[5].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[3])){

if(listenerPanel[0].getTitleNumber()==0){

listenerPanel[3].setBackground(Color.white);

listenerPanel[3].setTitleNumber(0);

listenerPanel[0].setTitleNumber(m);

listenerPanel[0].setBackground(Color.darkGray);

}

if(listenerPanel[4].getTitleNumber()==0){

listenerPanel[3].setBackground(Color.white);

listenerPanel[3].setTitleNumber(0);

listenerPanel[4].setTitleNumber(m);

listenerPanel[4].setBackground(Color.darkGray);

}

if(listenerPanel[6].getTitleNumber()==0){

listenerPanel[3].setBackground(Color.white);

listenerPanel[3].setTitleNumber(0);

listenerPanel[6].setTitleNumber(m);

listenerPanel[6].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[4])){

if(listenerPanel[1].getTitleNumber()==0){

listenerPanel[4].setBackground(Color.white);

listenerPanel[4].setTitleNumber(0);

listenerPanel[1].setTitleNumber(m);

listenerPanel[1].setBackground(Color.darkGray);

}

if(listenerPanel[7].getTitleNumber()==0){

listenerPanel[4].setBackground(Color.white);

listenerPanel[4].setTitleNumber(0);

listenerPanel[7].setTitleNumber(m);

listenerPanel[7].setBackground(Color.darkGray);

}

if(listenerPanel[3].getTitleNumber()==0){

listenerPanel[4].setBackground(Color.white);

listenerPanel[4].setTitleNumber(0);

listenerPanel[3].setTitleNumber(m);

listenerPanel[3].setBackground(Color.darkGray);

}

if(listenerPanel[5].getTitleNumber()==0){

listenerPanel[4].setBackground(Color.white);

listenerPanel[4].setTitleNumber(0);

listenerPanel[5].setTitleNumber(m);

listenerPanel[5].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[5])){

if(listenerPanel[4].getTitleNumber()==0){

listenerPanel[5].setBackground(Color.white);

listenerPanel[5].setTitleNumber(0);

listenerPanel[4].setTitleNumber(m);

listenerPanel[4].setBackground(Color.darkGray);

}

if(listenerPanel[2].getTitleNumber()==0){

listenerPanel[5].setBackground(Color.white);

listenerPanel[5].setTitleNumber(0);

listenerPanel[2].setTitleNumber(m);

listenerPanel[2].setBackground(Color.darkGray);

}

if(listenerPanel[8].getTitleNumber()==0){

listenerPanel[5].setBackground(Color.white);

listenerPanel[5].setTitleNumber(0);

listenerPanel[8].setTitleNumber(m);

listenerPanel[8].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[6])){

if(listenerPanel[3].getTitleNumber()==0){

listenerPanel[6].setBackground(Color.white);

listenerPanel[6].setTitleNumber(0);

listenerPanel[3].setTitleNumber(m);

listenerPanel[3].setBackground(Color.darkGray);

}

if(listenerPanel[7].getTitleNumber()==0){

listenerPanel[6].setBackground(Color.white);

listenerPanel[6].setTitleNumber(0);

listenerPanel[7].setTitleNumber(m);

listenerPanel[7].setBackground(Color.darkGray);

}

}else if(jb.equals(listenerPanel[7])){

if(listenerPanel[6].getTitleNumber()==0){

listenerPanel[7].setBackground(Color.white);

listenerPanel[7].setTitleNumber(0);

listenerPanel[6].setTitleNumber(m);

listenerPanel[6].setBackground(Color.darkGray);

}

if(listenerPanel[8].getTitleNumber()==0){

listenerPanel[7].setBackground(Color.white);

listenerPanel[7].setTitleNumber(0);

listenerPanel[8].setTitleNumber(m);

listenerPanel[8].setBackground(Color.darkGray);

}

if(listenerPanel[4].getTitleNumber()==0){

listenerPanel[7].setBackground(Color.white);

listenerPanel[7].setTitleNumber(0);

listenerPanel[4].setTitleNumber(m);

listenerPanel[4].setBackground(Color.darkGray);

}

}else {

if(listenerPanel[5].getTitleNumber()==0){

listenerPanel[8].setBackground(Color.white);

listenerPanel[8].setTitleNumber(0);

listenerPanel[5].setTitleNumber(m);

listenerPanel[5].setBackground(Color.darkGray);

}

if(listenerPanel[7].getTitleNumber()==0){

listenerPanel[8].setBackground(Color.white);

listenerPanel[8].setTitleNumber(0);

listenerPanel[7].setTitleNumber(m);

listenerPanel[7].setBackground(Color.darkGray);

}

}

boolean b=true;//是否完成标记

for(int i=0;ilistenerPanel.length;i++){//判断listenerPanel[0]~listenerPanel[8]上的数字是从0~8.若是完成拼图

if(listenerPanel[i].getTitleNumber()!=i)

b=false;

}

if(b==true){

int i=JOptionPane.showConfirmDialog(null, "would you paly agin?");

if(i==0){

if(i==0){

Rectangle re=this.getBounds();

this.dispose();

SlidingPuzzle slidingPuzzle=new SlidingPuzzle();

slidingPuzzle.setBounds(re);

}

else if(i==1)

System.exit(0);

else ;

}

}

}

public void mouseReleased(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

}

如果运行过程什么问题追问或者hi

JAVA 实现算法

package huda.laogao.ON_20121216;

import java.util.*;

public class GetEquation {

ArrayListInteger params = null;// 进行加减的数,长度设为n

int result = 0;// 结果

public GetEquation(ArrayListInteger params, int result) {

this.params = params;

this.result = result;

}

public void run() {

int size = params.size();

if (size == 1) {

if (params.get(0) == result)

System.out.println(result + "=" + result);

else

System.out.println("Invalid");

return;

}

int[][] matrix = getMatrix(size - 1);

int m = matrix.length;// 行数

int count = 0;// 记录符合结果的组合数

for (int i = 0; i m; i++) {

int now = params.get(0);// 进行加减的结果,初始为第一个值

// 从第二个数开始进行加或减,加的话就相当于该数乘上1,然后加到结果上,

// 减的就相当于该数乘上-1,然后加到结果上

for (int j = 1; j size; j++) {

now += matrix[i][j - 1] * params.get(j);

}

// System.out.println(now);

// 判断结果

if (now == result) {

count++;// 组合数加1

System.out.print(params.get(0));

for (int j = 1; j size; j++) {

if (matrix[i][j - 1] == 1)

System.out.print("+" + params.get(j));

else

System.out.print("-" + params.get(j));

}// for j

System.out.println("=" + result);

}// if

}// for i

if (count == 0)

System.out.println("Invalid");

}

public int[][] getMatrix(int n) {

int m = (int) Math.pow(2, n);

int matrix[][] = new int[m][n];

for (int i = 0; i n; i++) {

int num = (int) Math.pow(2, i + 1);

// 总共分 2^(i+1)块,如i=0,即该矩阵的第一列,可分为2块,上一块取1,下一块取-1

int size = (int) Math.pow(2, n - i - 1);

// 每块的大小为2^(n-i-1),如n=3,i=0,每块的大小为4,即前4个为1,后4个为-1

int flag = 1;// 先为+

for (int j = 0; j num; j++) {

for (int k = 0; k size; k++) {

matrix[k + j * size][i] = flag;

}

flag *= -1;

}

}

return matrix;

}

public void print(int[][] matrix) {

for (int i = 0; i matrix.length; i++) {

for (int j = 0; j matrix[i].length; j++) {

System.out.print(matrix[i][j] + "\t");

}

System.out.println();

}

}

public static void main(String args[]) {

ArrayListInteger params = new ArrayListInteger();

params.add(1);

params.add(2);

params.add(3);

params.add(4);

int result = 10;

GetEquation ge = new GetEquation(params, result);

ge.run();

}

}

运行结果为:1+2+3+4=10

注:难点为获取加减矩阵,可辅助print()函数帮助理解

望采纳


分享名称:java前台代码算法 java开发前台
网站地址:http://ybzwz.com/article/dosjejo.html