我的数组里有一组数
取出第0位的值加上35 然后再次遍历这个数组 如果有 就再次加上70遍历这个数组 然后继续遍历 再加105遍历 再加 140遍历 再加 175遍历。
如果这5次都存在与数组里 那么就返回个真值
如果为假,那么就从数组的第一位开始 继续照上面的+35的方法继续遍历数组
等到数组第最后一位都遍历完了后 还是没有的话 就返回一个FALSE。 如何去实现?例如说xx[0]的值20 那么循环xx这个数组寻找20+35 也就是55的这个数 是否在数组里存在。
如果存在 就继续查找20+35X2也就是70 在不在数组里。。
存在就继续查询 一直到20+35X5 如果5个都存在 那么就返回TRUE;
只要其中一个不存在的话 就跳出这个循环 。。
然后 继续从XX[1]开始 照以上的方式循环数组。满足就返回TRUE,不满足就返回FALSE;
如何实现?我自己写的头都晕了 下面是我的代码 肯定是错的 private bool bxwinn()
{
bool win = false;
int x = 1;
for (int i = 0; i < 10; i++)
{
MessageBox.Show(bzbx[i].ToString());
for (int k = 35; k <= 175; k = k + 35)
{
for (int j = 0; j < 95; j++)
{ if ((bzbx[i] + k) == bzbx[j])
{
x++;
break;
} }
}
if (x == 5)
{
win = true;
break;
}
}
return win;
}
取出第0位的值加上35 然后再次遍历这个数组 如果有 就再次加上70遍历这个数组 然后继续遍历 再加105遍历 再加 140遍历 再加 175遍历。
如果这5次都存在与数组里 那么就返回个真值
如果为假,那么就从数组的第一位开始 继续照上面的+35的方法继续遍历数组
等到数组第最后一位都遍历完了后 还是没有的话 就返回一个FALSE。 如何去实现?例如说xx[0]的值20 那么循环xx这个数组寻找20+35 也就是55的这个数 是否在数组里存在。
如果存在 就继续查找20+35X2也就是70 在不在数组里。。
存在就继续查询 一直到20+35X5 如果5个都存在 那么就返回TRUE;
只要其中一个不存在的话 就跳出这个循环 。。
然后 继续从XX[1]开始 照以上的方式循环数组。满足就返回TRUE,不满足就返回FALSE;
如何实现?我自己写的头都晕了 下面是我的代码 肯定是错的 private bool bxwinn()
{
bool win = false;
int x = 1;
for (int i = 0; i < 10; i++)
{
MessageBox.Show(bzbx[i].ToString());
for (int k = 35; k <= 175; k = k + 35)
{
for (int j = 0; j < 95; j++)
{ if ((bzbx[i] + k) == bzbx[j])
{
x++;
break;
} }
}
if (x == 5)
{
win = true;
break;
}
}
return win;
}
解决方案 »
- Func<> 委托的错误,郁闷
- C# 关于UDP点对点通讯的问题
- 怎么点击一下datagridview的单元格,在单元格的下方再显示一个datagridview,方便选择数据
- C# winform窗体的大小在不同的分辨率下怎么设置啊?
- 300分求一款服装行业的进销存软件?
- 请问在access中可不可以保存word文档,如何存。
- WPF新开线程加载播放主线程的动画出错 提示调用线程无法访问此对象
- 各位有个简单c#问题请教
- 运行提示:System.Data.DataSet.Tables”表示“属性”,此处应为“方法”
- 数据库边接小问题
- DragObj.style 为空或者不是对象。
- 改变datagridview某列数据问题(winfrom)
这个是i<100...
using System.Collections.Generic;
using System.Collections;namespace Test
{
class Program
{
static void Main()
{ int[] bzbx = { 20,30,55,65, 90,100, 125,135, 160,170,194,205};
int m = 5;
int p = 35;
int n;
int t;
bool flag = false;
Array.Sort<int>(bzbx);//先排序 for (int i = 0; i < bzbx.Length-5; i++)
{
t = bzbx[i];
n = 1;
for (int j = i + 1; j < bzbx.Length&&n<6; j++)
{
if (bzbx[j] == bzbx[i] + p * n)
{
n++;
}
}
if (n == m + 1)
{
flag = true;
Console.WriteLine("{0}满足,return true!",t);
}
}
if (!flag) Console.WriteLine("不满足,return false!"); } }}
{
class Test
{
static int[] arr={ 10,555,45,80,115,150,185,222};
static void Main()
{
Console.WriteLine(Find());
Console.Read();
} private static bool Find()
{
for(int i=0;i<arr.Length;i++)
{
for (int j = 35; j <= 175; j += 35)
{
if (!Serch(arr[0] + j))
return false;
}
}
return true;
}
private static bool Serch(int i)
{
foreach (int j in arr)
{
if (i == j)
return true;
}
return false;
}
}
}
不知道你是不是这个意思。。试了一下通过
using System;
using System.Collections.Generic;
using System.Collections;namespace Test
{
class Program
{
static void Main()
{
int[] bzbx = { 20,30,55,65, 90,100, 125,135, 160,170,194,205};
int m = 5;
int p = 35;
Array.Sort<int>(bzbx);//先排序
bool flag = IsValidCondition(bzbx, p, m);
}
static bool IsValidCondition(int[] bzbx, int p, int m)
{
int n;
int t;
for (int i = 0; i < bzbx.Length - 5; i++)
{
t = bzbx[i];
n = 1;
for (int j = i + 1; j < bzbx.Length && n < 6; j++)
{
if (bzbx[j] == bzbx[i] + p * n)
{
n++;
}
}
if (n == m + 1)
{
Console.WriteLine("{0}满足!", t);
return true;
}
}
Console.WriteLine("不满足!");
return false;
}
}}结果:
30满足!
请按任意键继续. . .
这样还是不对
我照5楼的方法改了一下。。
还是没达到我想要的那个效果
其实简单的说 就是取出那个20 然后遍历寻找数组里 有没有20+35的这个值、、
有就再次循环寻找20+70.有就循环20+105 一直到20+175如果还有的话 就给TRUE如果中间有一个没的话 就直接给FALSE
4楼的谢谢了 我不是想表达的那个意思。。