寻找最小的传感器进行覆盖问题(求大神帮忙指正)

不許人間見白頭 2016-11-12 09:18:44
package package1;
//import java.math.*;


public class Doitpoint {
static char map[][]=new char[100][100];
static point pointlin[]=new point[300];

public static void make_point() {
for (int i = 0; i < pointlin.length; i++) {
pointlin[i] = new point();
}
}
//判断是否传感器休眠内部循环
public static void testpointin(point point1, point point2) {
int _x = Math.abs(point1.point_x - point2.point_x);
int _y = Math.abs(point1.point_y - point2.point_y);
double doxy= Math.sqrt(_x*_x+_y*_y);
if(doxy<8)
point1.alive = 'b';
}



//判断是否传感器休眠外部循环
public static void testpoint(point [] pointline) {
//外循环要测试的点
for (int i = 0; i < pointline.length; i++) {

//内循环寻找探针PRB_RPY
if(pointline[i].alive =='a')
{
for(int j=i+1;j<pointline.length;j++)
{
if(pointline[j].alive =='a')
{
testpointin(pointline[i], pointline[j]);
}
if (pointline[i].alive =='b')
break;


}
}
}
}

//绘制传感器覆盖的图像
public static void DrawingPoint(point[] pointlin) {

for (int i = 0; i < pointlin.length; i++) {
if(pointlin[i].alive =='a')
//覆盖的计算
NewDraw(pointlin[i].point_x,pointlin[i].point_y);
}
System.out.println((map.toString()));

}
//刷新覆盖数组
public static void NewDraw(int x ,int y)
{
map[x][y]='*';
int x1=x-8;
if (x1<0) {
x1=0;
}

int x2=x+8;
if (x2>100) {
x2=100;
}

int y1=y-8;
if (y1<0) {
y1=0;
}

int y2=y+8;
if(y2>100){
y2=100;
}
for (int charx = x1; x<=x2 ; x++) {
for (int chary =y1; chary <= y2; chary++) {
if (map[charx][chary] !='*')
{
map[charx][chary] = '0';
}
}
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
//point pointlin[]=new point[300];
make_point();
DrawingPoint(pointlin);


}

}
[code]package package1;
//import java.math.*;

package package1;

class point{
public int point_x;
public int point_y;
public char alive = 'a' ;
//使用中发现用不着了 public int PRB_RPY=0;
//构造探针并且对其随机覆盖位置
public point() {
// TODO Auto-generated constructor stub
point_x=(int)(Math.random()*100);
point_y=(int)(Math.random()*100);
}
}


public class Doitpoint {
static char map[][]=new char[100][100];
static point pointlin[]=new point[300];

public static void make_point() {
for (int i = 0; i < pointlin.length; i++) {
pointlin[i] = new point();
}
}
//判断是否传感器休眠内部循环
public static void testpointin(point point1, point point2) {
int _x = Math.abs(point1.point_x - point2.point_x);
int _y = Math.abs(point1.point_y - point2.point_y);
double doxy= Math.sqrt(_x*_x+_y*_y);
if(doxy<8)
point1.alive = 'b';
}



//判断是否传感器休眠外部循环
public static void testpoint(point [] pointline) {
//外循环要测试的点
for (int i = 0; i < pointline.length; i++) {

//内循环寻找探针PRB_RPY
if(pointline[i].alive =='a')
{
for(int j=i+1;j<pointline.length;j++)
{
if(pointline[j].alive =='a')
{
testpointin(pointline[i], pointline[j]);
}
if (pointline[i].alive =='b')
break;


}
}
}
}

//绘制传感器覆盖的图像
public static void DrawingPoint(point[] pointlin) {

for (int i = 0; i < pointlin.length; i++) {
if(pointlin[i].alive =='a')
//覆盖的计算
NewDraw(pointlin[i].point_x,pointlin[i].point_y);
}
System.out.println((map.toString()));

}
//刷新覆盖数组
public static void NewDraw(int x ,int y)
{
map[x][y]='*';
int x1=x-8;
if (x1<0) {
x1=0;
}

int x2=x+8;
if (x2>100) {
x2=100;
}

int y1=y-8;
if (y1<0) {
y1=0;
}

int y2=y+8;
if(y2>100){
y2=100;
}
for (int charx = x1; x<=x2 ; x++) {
for (int chary =y1; chary <= y2; chary++) {
if (map[charx][chary] !='*')
{
map[charx][chary] = '0';
}
}
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
//point pointlin[]=new point[300];
make_point();
DrawingPoint(pointlin);


}

}

求大神指教!!谢谢了!!
...全文
157 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧