有没有什么好方法判断3个数字相领的,比如
3,4,5
5,4,3
6,5,4注意,654和465都是相邻数
3,4,5
5,4,3
6,5,4注意,654和465都是相邻数
解决方案 »
- Excel显示的问题?~
- C# 支持两台打印机输出问题
- 远程文件属性读取
- ASP.NET光辉岁月新闻发布网站的问题
- 刷新树,滚动条向下跑了,怎么让它保持原状态,以便在刚才编辑的节点处,再继续进行操作!
- 请问怎样将dateTimePicker里的日期显示中,指定的日期变成灰色或禁掉?
- 如何在ToolStripComboBox中增加缩略图和字体显示效果呢?
- c#给JAVA传送文件有时不完整
- 如何使某个TREEVIEW节点处于选定状态
- 哪位高手有过此种经验?
- 观察者模式中,观察者窗体中的控件不起作用,这是什么原因呢?
- 求助 ~~~~DataGridView 中 我想将数据先更新到DataTable 中, 然后再更新数据库, 怎么实现? ~~~~~在线等侍!!!!!!!
2.max-min == 2 即为相邻数...更多数...max-min == count-1...
435不算的话
if((a[0]-a[1])*(a[1]-a[2])==1)
{
}(如果确定是整形的话。。)
这个怎么判断3、4、3这样的数据? private bool GetBoolResult(int[] numbers)
{
int sum=numbers[0]+numbers[1];
int abs=(int)Math.Abs(numbers[0]-numbers[1]);
if((abs==2&&numbers[2]==sum/2)||(abs==1&&(numbers[2]==(sum+3)/2||numbers[2]==(sum-3)/2))) return true;
else return false;
}
这代码不算多吧?
private bool GetBoolResult(int[] numbers)
{
int sum=numbers[0]+numbers[1];
int abs=(int)Math.Abs(numbers[0]-numbers[1]);
if((abs==2&&numbers[2]*2==sum)||(abs==1&&(numbers[2]*2==(sum+3)||numbers[2]*2==(sum-3)))) return true;
else return false;
}
private bool GetBoolResult(int[] numbers)
{
int sum=numbers[0]+numbers[1];
int abs=Math.Abs(numbers[0]-numbers[1]);
return (abs==2&&numbers[2]*2==sum)||(abs==1&&(numbers[2]*2==(sum+3)||numbers[2]*2==(sum-3)));
}
2、计算 2a=b+c
(abs==1&&(numbers[2]*2==(sum+3)||numbers[2]*2==(sum-3))
可以写
(abs==1&&(Math.Abs(numbers[2]*2-sum)==3))
{
}
啊 ~~~不知道对不对 欢迎检查。。
这个方法很好呀,我同意15楼的,应该是2b=a+c吧.
{
int i=numbers[0]-numbers[1];
int j=numbers[1]-numbers[2];
return (Math.Abs(a + b) <= 2) && (Math.Abs(a - b) <= 3) && (a * b != 0);
}
15L的代码很简洁 至少21L能看懂..至于我的。。我有点不自信
AB哪来的?
是IJ的话
434带进去 结果不对
大概。。
应该是
if(Math.Abs(a[0]-a[1])*(a[1]-a[2])+0.5)==1.5)
{
}
或
if(Math.Abs(a[0]-a[1])*(a[1]-a[2])*2+1)==3)
{
}
if(Math.Abs((a[0]-a[1])*(a[1]-a[2])+0.5)==1.5)
{
}
或
if(Math.Abs((a[0]-a[1])*(a[1]-a[2])*2+1)==3)
{
}
我是说
“min_jie的代码对的 ”
“15L的代码很简洁 至少21L能看懂.. ”
请连起来看
然后再N个IF来判断?“但是三个数不能有正有负。” 那么还要3次求绝对值?
private bool isSeriesNumber(int[] array)
{
bool rtn = true;
Array.Sort(array);
for (int i = 1; i < array.Length; i++)
{
if (array[i] - array[i - 1] != 1)
{
rtn = false;
break;
}
}
return rtn;
}
既然是相邻,那么三个数互相减一遍,肯定有两个1,一个2,即可判定相邻。
但是三个数不能有正有负。
同理,如果三个数是2 4 6;13 19 25等等,那么其中两个差数的和必等于第三个差数。
至于代码,要自己琢磨喽,琢磨出来可是必拿别人写好的收获大多了,对自己有好处的。
先用3行代码求3个差
然后再N个IF来判断? 回答:既然楼主说“判断3个数字相领的”那么只需3个if判断即可,不需要N个。
你要是看看41楼的方法就发现与我的方法是一样的。“但是三个数不能有正有负。” 那么还要3次求绝对值?
回答:三个数如果有正有负那么就不能用我说的方法。
N包括3
另外这好象还没 你30L说的
NUM.Sort()
if(NUM[2]-NUM[1]==1&&NUM[1]-NUM[0]==1)
简单吧
如果是N个数,那么还是41楼通用。
bool CheckArray(int[] array)
{
if (array.Distinct().Count() != array.Length)
return false;
return array.Max() - array.Min() == array.Length - 1;
}当然...如此简洁的代码需要Linq支持...
bool CheckArray(int[] array)
{
Array.Sort(array);
for (int i = 1; i < array.Length; i++)
{
if (array[i] == array[i - 1])
return false;
}
return array[array.Length-1] - array[0] == array.Length - 1;
}
namespace WindowsApplication13
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); List<int> Numbers = new List<int>(); Numbers.Add(6);
Numbers.Add(5);
Numbers.Add(4);
MessageBox.Show(IsNearBy(Numbers).ToString());
} bool IsNearBy(List<int> Numbers)
{
Numbers.Sort();
for (int i = Numbers[0]; i <= Numbers[Numbers.Count - 1]; i++)
if (Numbers.IndexOf(i) == -1)
return false;
return true;
}
}
}
晕。。是其他的话,后面就不用判断了,直接就返回false了。。
1.三数不等
2.max与min差为2
就成如果是小数,就要问一下“相邻”的定义了。
{
}
不要符点的话
if(Math.Abs((a[0]-a[1])*(a[1]-a[2])*2+1)==3)
{
}
不要函数的话
if((a[0]-a[1])*(a[1]-a[2])==1||(a[0]-a[1])*(a[1]-a[2])==-2)
{
}
如果有n个数:
Math.Abs( a[0] - a[n-1] ) = n-1