100分,求简单算法!请帮忙,很急!!!!

philorlogin 2005-02-27 03:44:14
怎么样判断一个数组中的连续6个值大于某个固定数,并记录他们的位置?!
比如x(20)的值如下:
x(0)=5
x(1)=4
x(2)=3
x(3)=6
x(4)=7
x(5)=8
x(6)=9
x(7)=10
x(8)=11
x(9)=13
x(10)=2
x(11)=5
x(12)=7
x(13)=12
x(14)=21
x(15)=43
x(16)=55
x(17)=47
x(18)=12
x(19)=32
现在就要知道,从x(3)到x(8)是连续6个值大于5,从x(13)到x(19)也是连续6个数大于5!
请问各位有什么好办法用程序判断出来呢?!
...全文
149 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
njuzgj 2005-02-28
  • 打赏
  • 举报
回复
UP
philorlogin 2005-02-28
  • 打赏
  • 举报
回复
並沒有實現判斷連續的六個數呀?!我知道,如果用兩個FOR循環可以實現,但是,速度怎麼解決?!
這隻是一個要求,還有很多要求,比如,判斷是否14個點的值相對於標準差上下交互跳動?!
如何解決?!
有沒有高手肯幫忙呀?!
flyingonnet 2005-02-28
  • 打赏
  • 举报
回复

int start=0; //这个就是每次开始的那个index
int count=0;
int countthreshold=3;//这个是连续几个,只要是连续3个或3个以上就算。
int threshold=5;//这个是比较的那个数,就是大于5的就算

//arr就是你的数组
for(int i=0; i< arr.Length; i++)
{
if(arr[i]> threshold)
{
if(count ==0) start =i;
count++;
}
else
{
if(count >0)
{
if(count >=countthreshold)
{
//record the posion;
你要记录下: start是开始index, count 就是往下数几个。
}
count =0;
}
}
}

//finish everything
if(count >=countthreshold)
{
你要记录下: start是开始index, count 就是往下数几个。
}
philorlogin 2005-02-28
  • 打赏
  • 举报
回复
因為太急,所以分數忘了改!可以再開帖給分!不好意思!
“判斷是否14個點的值相對於標準差上下交互跳動” 的意思是:根據歷史記錄算出這組數據的標準差,或者這個值是手工錄入的經驗值,然後,判斷後來錄入的數據是不是連續14個相對與標準差交互跳動。簡單地說,就是說,連續14個的分布是一個在上面,一個在下面。
web_gus 2005-02-28
  • 打赏
  • 举报
回复
up
3gold 2005-02-28
  • 打赏
  • 举报
回复
提醒一下你的题目只有20分就别写100分嘛
3gold 2005-02-28
  • 打赏
  • 举报
回复
判斷是否14個點的值相對於標準差上下交互跳動

看不懂哦
3gold 2005-02-28
  • 打赏
  • 举报
回复


private bool mark(int[] x,ref ArrayList al)
{
bool resualt=false;
int j=0;
for(int i=0;i<x.Length;i++)
{
if(x[i]>5)
{
j++;
}
else
{
if(j>=6)
{
resualt=true;
string alString="x("+(i-j+1).ToString()+")到x("+i.ToString()+")";
}
}
}
if(j>=6)
{
resualt=true;
string alString="x("+(x.Length-j+1).ToString()+")到x("+x.Length.ToString()+")";
}
return resualt;
}

调用这个方法该可以得到判断和结果了。
bool overload;//是否存在
ArrayList al=new ArrayList();//保存结果
overload=mark(x,al);
lingwu05 2005-02-28
  • 打赏
  • 举报
回复
就循环嵌套,只要不是太多,循环速度是很快的啊!
lonelydreamsym 2005-02-28
  • 打赏
  • 举报
回复
up
bingbingcha 2005-02-27
  • 打赏
  • 举报
回复
拷贝下面代码.测试就可以看到结果.也修改里面的变量数值.代码中有注释.

private void Page_Load(object sender, System.EventArgs e)
{
int[] mystr = new int[30];
for(int i=0;i<30;i++){//创建初始化数据
mystr[i] = i+1;
}

int startNum=5,endNum=20,num=0,cs=15;//startNum是从那里开始检测,endNum是检测结束位置,num是变量,cs是测试数据(也就是要比较的数)
foreach(int ii in mystr){//检测数据
Response.Write(ii.ToString());
if (num>=startNum && num<=endNum){
if (ii>=cs){
if (ii==cs)
{
Response.Write(",开始比较:"+ii.ToString()+"比"+cs.ToString()+"的结果是:相等");}else{
Response.Write(",开始比较:"+ii.ToString()+"比"+cs.ToString()+"的结果是:大");}
}else{
Response.Write(",开始比较:"+ii.ToString()+"比"+cs.ToString()+"的结果是:小"); }
}
num++;
Response.Write("<br>");
}
}
philorlogin 2005-02-27
  • 打赏
  • 举报
回复
就是一种报警的需要呀!数据是别人录入的,但是要求说,连续几个数在一倍标准差之外,就报警!
venus0314 2005-02-27
  • 打赏
  • 举报
回复
帮你UP以下,不过不晓得楼主怎么会有这种需求?

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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