一,为啥么重载只是返回类型相同不行?说一说3种排序的思想
二,单例模式
写一个单例模式的代码
public class Singleton{
private static Singleton instance=null;
private Singleton(){}
public static synchronized getInstance(){
if(instance==null)
instance=new Singleton();
return instance;
}
}
三。求数字相视度
有2个32位的A,B整数,他们的二进制相同位置值相同的个数为n,n/32*100%为其相似度。现有一组整数,按其相似度从大到小输出,按组输出(若值相同放入同一组)
四。五子棋
有一个15*15的五子棋,其中有个子任务是判断当前棋局谁赢啦,写出其相关的数据结构和算法。
/**
* 判断是否一方获得胜利
*/
protected boolean judge(int x,int y,int clr){
int i=0,j=0,count=0;
//判断 x 方向
for(i=0,count=0;x-i>=0&&i<5;i++){
if (clr==board[x-i][y]){
count++;
}else{
break;
}
if(count==5)
return true;
}
for(i=1;x+i<15&&i<5;i++){
if(clr==board[x+i][y]){
count++;
}else{
break;
}
if(count==5)
return true;
}
// 判断 y 方向
for(i=0,count=0;y-i>=0&&i<5;i++){
if (clr==board[x][y-i]){
count++;
}else{
break;
}
if(count==5)
return true;
}
for(i=1;y+i<15&&i<5;i++){
if(clr==board[x][y+i]){
count++;
}else{
break;
}
if(count==5)
return true;
}
// 判断左下方向
for(i=0,count=0;x-i>=0&&y-i>=0&&i<5;i++){
if(clr==board[x-i][y-i]){
count++;
}else{
break;
}
if(count==5)
return true;
}
for(i=1;x+i<15&&y+i<15&&i<5;i++){
if(clr==board[x+i][y+i]){
count++;
}else{
break;
}
if(count==5){
return true;
}
}
// 判断 右上 方向
for(i=0,count=0;x+i<15 && y-i>=0 &&i<5; i++){
if(clr==board[x+i][y-i]){
count++;
}else{
count=0;
}
if(count==5)
return true;
}
for(i=1;x-i>=0 && y+i<15 &&i<5;i++){
if(clr==board[x-i][y+i]){
count++;
}else{
break;
}
if(count==5){
return true;
}
}
return false;
}
class Queue{
int position;
long mark;
} ;
五子棋向量解法:
[java] view plaincopyprint?public class Test {
static int[][] qipan = new int[15][15];
public static void main(String[] args) {
qipan[1][1] = 2;
qipan[2][2] = 2;
qipan[3][3] = 2;
qipan[4][4] = 2;
qipan[5][5] = 2;
System.out.println(isWin(qipan,2));
}
/**
* 判断五子棋棋盘数组是否存在连5
* @param qipan 棋盘数组,int类型,默认值为0
* @param color 棋子颜色,int类型,1为黑,2为白
* @return 如果存在连5,则返回True
*/
public static boolean isWin(int[][] qipan,int color){
boolean colsWcoln = false;
int colors = (int) Math.pow(color, 5);
for(int row = 0;row<15;row++){
for(int col=0;col<15;col++){
//第一种
if(row<=10 && col<4){
//int x = qcolpan[col][row]*qcolpan[col][row]*qcolpan[col][row]*qcolpan[col][row]*qcolpan[col][row]//→
int x = qipan[col][row]*qipan[col+1][row]*qipan[col+2][row]*qipan[col+3][row]*qipan[col+4][row];//→
int y = qipan[col][row]*qipan[col+1][row+1]*qipan[col+2][row+2]*qipan[col+3][row+3]*qipan[col+4][row+4]; //→
int z = qipan[col][row]*qipan[col][row+1]*qipan[col][row+2]*qipan[col][row+3]*qipan[col][row+4]; //→
if(x == colors || y == colors || z == colors){
colsWcoln = true;
}
}
//第二种
if(row<=10 && col>=4 && col<=10 ){
int x = qipan[col][row]*qipan[col+1][row]*qipan[col+2][row]*qipan[col+3][row]*qipan[col+4][row];//→
int y = qipan[col][row]*qipan[col+1][row+1]*qipan[col+2][row+2]*qipan[col+3][row+3]*qipan[col+4][row+4]; //→
int z = qipan[col][row]*qipan[col][row+1]*qipan[col][row+2]*qipan[col][row+3]*qipan[col][row+4]; //→
int m = qipan[col][row]*qipan[col-1][row]*qipan[col-2][row]*qipan[col-3][row]*qipan[col-4][row];//→
int n = qipan[col][row]*qipan[col-1][row+1]*qipan[col-2][row+2]*qipan[col-3][row+3]*qipan[col-4][row+4];//→
if(x == colors || y == colors || z == colors || m == colors || n == colors){
colsWcoln = true;
}
}
//第三种
if(row<=10 && col>10 ){
int z = qipan[col][row]*qipan[col][row+1]*qipan[col][row+2]*qipan[col][row+3]*qipan[col][row+4]; //→
int m = qipan[col][row]*qipan[col-1][row]*qipan[col-2][row]*qipan[col-3][row]*qipan[col-4][row];//→
int n = qipan[col][row]*qipan[col-1][row+1]*qipan[col-2][row+2]*qipan[col-3][row+3]*qipan[col-4][row+4];//→
if( z == colors || m == colors || n==colors){
colsWcoln = true;
}
}
//第四种
if(row>10 && col<4){
int x = qipan[col][row]*qipan[col+1][row]*qipan[col+2][row]*qipan[col+3][row]*qipan[col+4][row];//→
if(x == colors){
colsWcoln = true;
}
}
//第五种
if(row>10 && col>=4 && col<=10){
int x = qipan[col][row]*qipan[col+1][row]*qipan[col+2][row]*qipan[col+3][row]*qipan[col+4][row];//→
int m = qipan[col][row]*qipan[col-1][row]*qipan[col-2][row]*qipan[col-3][row]*qipan[col-4][row];//→
if(x == colors || m == colors)
{
colsWcoln = true;
}
}
//第六种
if(row>10 && col>10)
{
int m = qipan[col][row]*qipan[col-1][row]*qipan[col-2][row]*qipan[col-3][row]*qipan[col-4][row];//→
if(m == colors ){
colsWcoln = true;
}
}
}
}
return colsWcoln;
}
}