社区
Java SE
帖子详情
算法问题。。 高手来~
anningha
2004-09-13 06:31:26
1。1-100中随机抽取50个数 如何判断其中是否又5个数字是连续的 并且打印出来
2。100个点中随机抽取40个点的坐标(数值在1-100之间)如何判断5个点是连续的 只考虑不在一行或一列的情况 也就是斜着连续的情况
...全文
123
9
打赏
收藏
算法问题。。 高手来~
1。1-100中随机抽取50个数 如何判断其中是否又5个数字是连续的 并且打印出来 2。100个点中随机抽取40个点的坐标(数值在1-100之间)如何判断5个点是连续的 只考虑不在一行或一列的情况 也就是斜着连续的情况
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
opencsdn
2004-09-14
打赏
举报
回复
if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1||d1==-1))
----不会啊,我试了一下,可以的啊,
如1,2,3,4,5,4,3,2,1,3,4,5,6,7,44,56,7,67,68,69,70,71------
能找出来啊
lippea
2004-09-14
打赏
举报
回复
1。我认为先排序,然后按照allenhe(一定要过二级) 的方法对数据扫描一遍
2。“只考虑不在一行或一列的情况 也就是斜着连续的情况”
斜着连续需不需要考虑?如果不需要的话,可以采用十字链表,先组织数据,
然后对所有行、所有列的头指针进行扫描,看是否有长度>=5的就ok了
anningha
2004-09-14
打赏
举报
回复
1楼的有些语法错误 修改一点
import java.util.*;
public class Test{
public static void main(String args[])
{
byte numbers[]=new byte[50];
Random random = new Random () ;
int count=0;
while(count<50) //1个改动
{
int i = random.nextInt (100);
if(i!=0)
{
//2个改动 for(int j=0;j<50;j++){
numbers[j]=i;
count++;
}
}
}
for(int j=0;j<numbers.length;j++)
{
if(IsLianxu(numbers,j))
System.out.println(numbers[j]+" "+numbers[j+1]+" "+numbers[j+2]+" "+numbers[j+3]+" "+numbers[j+4]);
}
}
public static boolean IsLianxu(byte[] numbers,int index)
{
boolean isLianxu=false;
int len=numbers.length;
if(index+4>=len)
return false;
int d1=numbers[index]-numbers[index+1];
int d2=numbers[index+1]-numbers[index+2];
int d3=numbers[index+2] - numbers[index+3];
int d4=numbers[index+3]-numbers[index+4];
if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
isLianxu=true;
return isLianxu;
}
}
成功编译 但运行没有任何结果????????????
anningha
2004-09-13
打赏
举报
回复
刚才没仔细看
1楼的这句好像不太对?
if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
isLianxu=true;
不过思路还是很好。。 谢谢
anningha
2004-09-13
打赏
举报
回复
我也认为先排序 否则isLIANXU得不出正确得结果来
我的分析://建立数组
int[] Num=new int[50];
//建立新数组
int[] Total=new int[100];
//对应位置填入 比如Total[20]=20
Total[Num[i]]=Num[i];
//如果有连续的5个值不为空 成立
for(i=0;i<Total.length;i++){
if(Total[i]!=null&&Total[i+1]!=null&&.....) (不好意思我记不清楚基本型别数组初始化是不是null了。。)
.......;
allenhe
2004-09-13
打赏
举报
回复
在抽取50个随机数的时候设置一个连续数repeatCount
然后保存上一个随机数和一个差值(默认为0),如果这一个随机数和上一个随机数差1且和差值相等(如果差值为0就保存差值),则repeatCount++,
否则repeatCount清零,差值清零
判断repeatCount==5的时候退出随机数抽取。
差值作用是判断到底是增1还是减1
再次,如果给定50个数找5个连续数,也不用步进一
假设第一,二,三数连续,第四数不连续,则可以直接步进到第四数,从第四数开始比较
随便写写,不知道对不对。
意念匿名...
redspider9999
2004-09-13
打赏
举报
回复
楼上的算法应该先对整个数组进行排序把
opencsdn
2004-09-13
打赏
举报
回复
第2个关键就是判断是不是连续的函数,和上面一个差不多
dx1=Point1.x-Point2.x;dy1=Point1.y-Point2.y;
dx2------------------;dy2=-----------------
-----
-----
-----
dx4=------------------;dy4=---------------
opencsdn
2004-09-13
打赏
举报
回复
先来第1个
public void static main(String args[])
{
byte numbers[]=new byte[50];
Random random = new Random () ;
int count=0;
while(count<=50)
{
int i = random.nextInt (100)
if(i!=0)
{
numbers[j]=(byte)i;
count++;
}
}
for(int j=0;j<numbers.length;j++)
{
if(IsLianxu(numbers,j))
System.out.println(numbers[j]+" "+numbers[j+1]+" "+numbers[j+2]+" "
+numbers[j+3]+" "+numbers[j+4]);
}
}
}
public static boolean IsLianxu(byte[] numbers,int index)
{
boolean isLianxu=false;
int len=numbers.length;
if(index+4>=len)
return isLianxu;
int d1=numbers[index]-numbers[index+1];
int d2=numbers[index+1]-numbers[index+2];
int d3=numbers[index+2] - numbers[index+3];
int d4=numbers[index+3]-numbers[index+4];
if((d1==d2)&&(d2==d3)&&(d3==d4)&&(d1==1|d1==-1))
isLianxu=true;
return isLianxu;
}
adaboost
算法
源码(c++)
adaboost源码,用c++写的。抛开了积分图计算等复杂的部分,专注于adaboost
算法
的具体实现过程,希望对初学者有帮助,也希望
高手
不吝指教。
这本Python
算法
书有点火~
普通程序员,不学
算法
,也可以成为大神吗? 对不起,这个,绝对不可以。 可是
算法
好难啊~~看两页书就想睡觉…… 所以就不学了吗?就一直当普通程序员吗?...来,看看这本书有多可爱—— 二...
求森林变换分水岭
算法
啊~~~matlab或者C++编写的
求
高手
编写的森林变换分水岭
算法
啊~~~matlab或者C++编写的,现在读英文文献起来,感觉有点困难
这本零差评且有趣的 Python
算法
书有点火~
普通程序员,不学
算法
,也可以成为大神吗?对不起,这个,绝对不可以。可是
算法
好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本
算法
书,看着很轻松...
一本通
算法
高效进阶
高手
算法
专项训练 暑期集训
现推出《
算法
高效进阶》《
高手
算法
专项训练》线上课程,课程以获得普及组J/提高组S一等奖为目标。9 月-11 月每周各安排 1 套模拟题,入门级和提高级约各 10 套。
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章