看板java
标 题Re: 请问要怎样化简这段code...
发信站无名小站 (Thu Mar 2 23:19:14 2006)
转信站ptt!ctu-reader!Spring!ctu-peer!news.nctu!csnews.cs.nctu!news.cs.nctu!n
※ 引述《ee55244 (好想睡觉啊orz)》之铭言:
> 我是要用来检查一个点是否被上下左右包住...
从你的程式码 看不太懂甚麽叫包住 (汗).....
> 以下的x和y的值都有点大(最少有1024 最大大约是到10240)...
> 我这样做等於是土法炼钢...所以执行起来真的很慢...
> 原则上四个回圈的结构相同...所以我在想可能可以合并...
> 让执行一次时可以不跑这麽多次好让效率上升...
> 我现在是想到用一个双层的回圈...
> 但是却想不到怎样去控制变数让它同时往(x,y)的上下左右去检查...
> 想请位各位有没有一些方法可以让他效率更好...谢谢大家<(_ _)>
我想到的想法 (好像没有比较好 XD)
不过就是把四个方向集中在同一个for回圈做
boolean[] location=new boolean[4];
for(int i=0;i<4;i++) location[i]=true;
for(int c=0;location[0]||location[1]||location[2]||location[3];c++){
try{
if(location[0]&&xy[x+c][y]==1){ //往右
test++;
location[0]=false;
}
}catch(Exception e){ //out of bound exception
location[0]=false;
}
try{
if(location[1]&&xy[x-c][y]==1){ //往左
test++;
location[1]=false;
}
}catch(Exception e){ //out of bound exception
location[1]=false;
}
try{
if(location[2]&&xy[x][y-c]==1){ //往上
test++;
location[2]=false;
}
}catch(Exception e){ //out of bound exception
location[2]=false;
}
try{
if(location[3]&&xy[x][y+c]==1){ //往下
test++;
location[3]=false;
}
}catch(Exception e){ //out of bound exception
location[3]=false;
}
}
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将知止知止可以不殆 A01015B.dorm.yzu.edu.tw海