写一个算法,输入四个整数,a1,a2,b1,b2
a1a2为一对,b1b2为一对,
求两对的公共区间.
如输入1,10,5,15
则表示[1,10]和[5,15]的公共区间为[5,10]这道题虽然简单,但我只能想到用常规的方法解答,即是三个IF语句,每个IF语句里面又嵌套一两个IF语句,
大家有没有更好一点的算法呢
(虽然说在这么小的一个问题上研究没什么实际意义)
但希望从大家的解答中能开拓一下自己的思维
a1a2为一对,b1b2为一对,
求两对的公共区间.
如输入1,10,5,15
则表示[1,10]和[5,15]的公共区间为[5,10]这道题虽然简单,但我只能想到用常规的方法解答,即是三个IF语句,每个IF语句里面又嵌套一两个IF语句,
大家有没有更好一点的算法呢
(虽然说在这么小的一个问题上研究没什么实际意义)
但希望从大家的解答中能开拓一下自己的思维
解决方案 »
- 流不支持并发 IO 读或写操作。
- 字符串中查找字符问题
- 我是新手,麻烦各位前辈帮个小忙...我JS调用后天方法,在页面加载的时候为什么会自动调用后台方法了?
- 在WPF中如何让界面上的时间可以实时更新?
- C#连接SQL server 2008 的问题
- 发现一个电子图书的好地方
- 如何在一个项目中加载另一个项目的窗体
- 虽然我很菜,但我还是要问,一个简单的datatable问题。
- XPO里面 主键自动增长列
- WinForm中获取另外一个应用程序界面上的内容
- (09年最具挑战性的的问题)请问怎么在C#做的窗体里面显示金蝶软件用户的登陆用户名??(C#窗体内嵌在金蝶软件中)
- 求比较完善的从html中提取URL链接的正则表达式
是这个意思吗
1、a1和a2比较,较大值赋给c1
2、c1和bn比较(如果a1大于a2,则和b2比较;如果a2大于a1,则和b1比较),如果c1大,则没有公共区间,否则,公共区间为c1:bn
static void GetCommonArea(int a1, int a2, int b1, int b2)
{
if (a1 > a2)
{
GetCommonArea(a2, a1, b1, b2);
return;
}
if (b1 > b2)
{
GetCommonArea(a1, a2, b2, b1);
return;
}
if (a1 > b1)
{
GetCommonArea(b1, b2, a1, a2);
return;
}
if (a2 < b1)
{
Console.WriteLine("无公共区间");
return;
}
if (a2 > b2)
{
GetCommonArea(a1, b2, b1, a2);
return;
}
Console.WriteLine("公共区间为:{0}---{1}", b1, a2);
}
{
Console.WriteLine ("没公共区间");
} else if (a >= a1)
{
Console.WriteLine(a);
}
else
{
Console.WriteLine(a1);
}
if (b >= b1)
{
Console.WriteLine(b1);
}
else
{
Console.WriteLine(b);
} Console.ReadLine();
这样就按你说的应该很好了呀
public string Convent(int a1, int a2, int b1, int b2) {
List<int> aList = new List<int>();
List<int> bList = new List<int>();
aList.Add(a1);
aList.Add(a2);
bList.Add(b1);
bList.Add(b2);
aList.Sort();
bList.Sort();
if (aList[1] < bList[0] || aList[0] > bList[1]) {
return "无公共区间";
}
aList.AddRange(bList);
aList.Sort();
if (aList[1] ==aList[2]) {
return ("公共区间为:" + aList[1].ToString());
}
return ("公共区间:" + aList[1].ToString() +"~"+ aList[2].ToString());
}
奇怪来着,现在的人都不用数学模型滴,这两天博客园热论“有道难题”,实际数学模型一建,代码自动就蹦出来了