2: 话说有四个女人越狱,都很有姿色,把一个看门狱警骗上床,然后穿着睡衣逃跑,跑到一条河边,有一座桥,夜间有一火把,每次最多过两个,必需带火把,过桥速度不一样
no.1 1min
no.2 2min
no3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥 之前的题目不够吸引人?都没有人看,我试试有女人的标题有多少人看.
no.1 1min
no.2 2min
no3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥 之前的题目不够吸引人?都没有人看,我试试有女人的标题有多少人看.
解决方案 »
- 很高兴找到这个与大家交流的地方!
- 当 A可以整除B的时候: C=A/B 不能整除的时候:如果A>B ,C=A/B+1,否则C=1,最简单的写法,应该怎样写?
- tooltip带关闭按钮
- 疑惑:protected 仅可以被所定义类型(或其任何嵌套类型)及其派生类型中的方法访问
- 通过win服务在局域网其它机器上,创建目录出现System.UnauthorizedAccessException异常
- 用devexpress表格控件的来接分,应该是简单的问题
- C#中如何查找替换word中的格式文本?
- C#写一个复数类,重载运算符实现+,-,==,!=。我前两个写好了,但逻辑判断符实在不会,书上也没有写的很清楚
- 大家来聊聊有关反射的用途
- C#web应用程序怎么回事啊?????——文体框在作怪!!!离开文本框时就迅速刷新页面
- 调试一个泛型的结构,提示:什么是“number”类型参数
- 已知一条GraphicsPath,一张图片,如何用这条GraphicsPath在图片中剪裁图形?
2、NO1 回
3、NO3、NO4过
4、NO2回
5、NO1、NO2过
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace WomenBridge
{
class Program
{
static void Main(string[] args)
{
//List<Woman> left = new List<Woman>() { new Woman(1, 1), new Woman(2, 2), new Woman(3, 5), new Woman(4, 10) };
List<Woman> left = new List<Woman>() { new Woman(1, 1), new Woman(2, 2), new Woman(3, 5), new Woman(4, 10),
new Woman(5,3),new Woman (6,8),new Woman(7,15),new Woman(8,20) };
FuckingBridge fb=new FuckingBridge ();
fb.Compute(left);
Console.ReadLine();
}
#region Woman
public class FuckingBridge
{
public void Compute(List<Woman> left)
{
left.Sort();
List<Woman> right = new List<Woman>(); if (left.Count <= 0)
{
Console.WriteLine("没有人要过河!");
}
else if (left.Count == 1)
{
Console.WriteLine("{0}自己过河,耗时{1}", left[0].Id, left[0].CrossTime);
}
else
{
int sum = 0; while (left.Count > 0)
{
sum += firstClassStep(left, right);
sum += SecondClassStep(left, right);
}
Console.WriteLine("总耗时:" + sum);
}
}
private int firstClassStep(List<Woman> left, List<Woman> right)
{
int time = 0;
if (left.Count > 0)
{
Woman w0 = left[0];
Woman w1 = left[1]; if (left.Count == 2)
{
//过去就不用回来.
right.Insert(0, w0);
right.Insert(1, w1);
left.Clear();
time = w1.CrossTime;
Console.WriteLine("{0}和{1}一起过河,无返回.耗时:{2}", w0, w1, time);
}
else
{
//只有w1过去而已.
right.Insert(0, w1);
left.RemoveAt(1);
time = w0.CrossTime + w1.CrossTime;
Console.WriteLine("{0}和{1}一起过河,{0}返回.耗时:{2}", w0, w1, time);
}
}
return time;
}
private int SecondClassStep(List<Woman> left, List<Woman> right)
{
int time = 0;
int size = left.Count;
if (size > 0)
{
Woman w0 = left[size - 2];
Woman w1 = left[size - 1];
left.RemoveAt(size - 1);
left.RemoveAt(size - 2);
right.Insert(1, w0);
right.Insert(2, w1);
if (left.Count == 0)
{
time = w1.CrossTime;
Console.WriteLine("{0}和{1}一起过河,无返回.耗时:{2}", w0, w1, time);
}
else
{
Woman w2 = right[0];
right.RemoveAt(0);
left.Insert(1, w2);
time = w1.CrossTime + w2.CrossTime;
Console.WriteLine("{0}和{1}一起过河,{2}返回.耗时:{3}", w0, w1, w2, time);
}
}
return time;
}
}
public class Woman : IComparable<Woman>
{
public Woman(int id, int time)
{
this.Id = id;
this.CrossTime = time;
}
public int Id { get; set; }
public int CrossTime { get; set; }
public override string ToString()
{
return string.Format("(Id:{0},Time:{1})", Id.ToString().PadLeft(3, ' '), CrossTime.ToString().PadLeft(4, ' '));
}
#region IComparable<Woman> Members public int CompareTo(Woman other)
{
if (other == null) return 1;
if (this.CrossTime > other.CrossTime) return 1;
if (this.CrossTime < other.CrossTime) return -1;
return 0;
} #endregion
}
#endregion
}
}
第一个来回:
1:no.1和no.2 过桥,no.2留下。 耗时为:2秒
2:no.1把火把带回来,耗时为:1秒
第二个来回:
1:no.3和no.4过桥,no.3和no.4都留下来。耗时为:10秒
2:no.2把火把带回来,耗时为:2秒
第三个来回:
1:no.1和no.2 过桥。 耗时为:2秒
经过三次全部都过桥了。总共耗时:2+1+10+2+2=17.
明白了吗?
2 {
3 int[] list = new int[1001];
4
5 for (int i = 1; i < 1001; i++)
6 {
7 list[i - 1] = i;
8 }
9
10 Random random = new Random();
11
12 list[1000] = random.Next(1, 1000);
13
14 int sum1 = 0;
15
16 int sum2 = 0;
17
18 foreach (int i in list)
19 {
20
21 sum1 = sum1 + i;
22 }
23 for (int i = 1; i < 1001; i++)
24 {
25
26 sum2 = sum2 + i;
27 }
28
29
30 Console.WriteLine("重复的数字是:"+(sum1 - sum2).ToString());
31 Console.Read();
32 }