关闭

算法题

117人阅读 评论(0) 收藏 举报
分类:
1题:
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现
一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空

间,能否设计一个算法实现?

static void Main(string[] args)                                               
{                                                                        
    int[] list = new int[1001];                                          
                                                                         
    for (int i = 1; i < 1001; i++)                                       
    {                                                                    
        list[i - 1] = i;                                                 
    }                                                                    
                                                                         
     Random random = new Random();                                       
                                                                         
     list[1000] = random.Next(1, 1000);                                  
                                                                         
     int sum1 = 0;                                                       
                                                                         
     int sum2 = 0;                                                       
                                                                         
     foreach (int i in list)                                             
     {                                                                   
                                                                         
         sum1 = sum1 + i;                                                
     }                                                                   
     for (int i = 1; i < 1001; i++)                                      
     {                                                                   
                                                                         
         sum2 = sum2 + i;                                                
     }                                                                   
                                                                         
                                                                         
     Console.WriteLine("重复的数字是:"+(sum1 - sum2).ToString());              
     Console.Read();                                                     
 } 

2: 四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
过桥速度不一样
no.1 1min
no.2 2min
no3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥
问题难点: 如果从需求中抽象出对象,并用程序输入
public class CrossBridge
{
   public int CrossTime
   { get; set; }

   public bool HasFire
   { get; set; }

   public string WomanID { get; set; }
}     



static int Sum;
static void Main(string[] args)
{
    int total = 100;
    while (total > 17)
   {
       Sum = 0;
       total = GotIt(NewList());
       
   }
    Console.Read();
}

static ArrayList NewList()
{
    CrossBridge woman1 = new CrossBridge();
    woman1.CrossTime = 1;
    woman1.WomanID = "1";
    CrossBridge woman2 = new CrossBridge();
    woman2.CrossTime = 2;
    woman2.WomanID = "2";
    CrossBridge woman3 = new CrossBridge();
    woman3.CrossTime = 5;
    woman3.WomanID = "3";
    CrossBridge woman4 = new CrossBridge();
    woman4.CrossTime = 10;
    woman4.WomanID = "4";
    ArrayList womanLists = new System.Collections.ArrayList();
    womanLists.Add(woman1);
    womanLists.Add(woman2);
    womanLists.Add(woman3);
    womanLists.Add(woman4);
    return womanLists;
}

static int GotIt(ArrayList lists)
{
    Random r1 = new Random();
    int i=r1.Next(0, lists.Count-1);
    CrossBridge w1 = (CrossBridge)lists[i];
    lists.Remove(w1);
    int j=r1.Next(0,lists.Count-1);           
    CrossBridge w2 = (CrossBridge)lists[j];
    lists.Remove(w2);
    CrossBridge temp ;
    Console.WriteLine("走过去的是: 第" + w1.WomanID.ToString() + "女人and " + "第" + w2.WomanID.ToString() + "个女人");               
    if (w1.CrossTime < w2.CrossTime)
    {               
        temp = w1;
    }
    else
    {               
        temp = w2;
    }
    Sum = Sum + w2.CrossTime + w1.CrossTime;
    lists.Add(temp);
   
    if (lists.Count != 1)
    {
        Console.WriteLine(temp.WomanID + "走回去了");
        Console.WriteLine("现在的时间是:" + Sum.ToString());
        GotIt(lists);
    }
    else
    {
        Sum = Sum - temp.CrossTime;
        Console.WriteLine("总时间是:" + Sum.ToString());
        System.Threading.Thread.Sleep(2000);
    }
    return Sum;
}  



0
0
查看评论

趣味Java算法题(附答案)

【程序1】    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?    //这是一个菲波拉契数列问题 public class lianxi...
  • zyqyz520
  • zyqyz520
  • 2014-07-02 23:53
  • 2538

2015阿里秋招其中一个算法题(经典)

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率 这是2015阿里秋招的一个在线笔试题 实现方法很简单,遍历一遍二叉树,找出最大最小,一相减就可以求出最大的差值 之前在做题的时候居然写递归的方法求值,后面测试了...
  • u014082714
  • u014082714
  • 2015-03-15 12:34
  • 1509

面试中有可能遇到的算法题--Java算法

面试中有可能遇到的算法题--Java算法 最近别人都问我是不是发神经,怎么突然离职了。我也只是呵呵一笑,不以为然。程序猿离职无需理由,做了两年6个月还没有跳过槽就更神奇了。 这个只有程序猿才知道。 好了,废话少说。 最近面试中遇到了一些Jave算法的题目,跟各位分享分...
  • xuxian361
  • xuxian361
  • 2015-10-17 15:18
  • 1572

几个有意思的算法题

1.题目标题: 高斯日记     大数学家高斯有个好习惯:无论如何都要记日记。     他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210     后来人们知道,那个整数就是日期,...
  • u012027907
  • u012027907
  • 2013-11-05 01:11
  • 28778

java一些经典算法题

·1 *求1!+2!+3!.....+30!的和 并用方法。 int a=1,b=30; qiuhe(a, b);*/ public class d501 { public static void main(String[] args) { qiuhe(1,30); } pu...
  • qq625315759
  • qq625315759
  • 2016-07-09 17:02
  • 429

算法爱好者——算法题终结篇(四)

找工作的这段时间,从”算法爱好者”这个公众号中获得了大量的数据结构和算法的题目,再次表示感谢。半年过来,刷过的题目也有两三百了,但是由于精力有限,后续准备不再大量刷题了,把看过的算法书的课后习题做一做,把在这个公众号上看到的,觉得还不错的题目放在【终结篇】里面,会保持长期更新 吹气球 有 n 个...
  • wjheha
  • wjheha
  • 2018-01-15 21:26
  • 55

算法:经典leetcode算法题解

1. Patching Array 补丁数组(考虑ing) 原题描述:https://leetcode.com/problems/patching-array/ 给定一个有序正整数数组nums以及一个整数n,向数组中添加/补充一些元素,使其“部分元素和”可以组成范围[1, n]内的所有数字。返回...
  • ztf312
  • ztf312
  • 2016-03-30 13:50
  • 1060

Python的100道经典算法题

按照c语言的100道经典算法题,自己原创写的,就得是自己的练习题了 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 #coding:utf-8 #...
  • IAlexanderI
  • IAlexanderI
  • 2017-04-08 16:49
  • 942

Google算法题:吹气球/合石子(区间动态规划)

https://mp.weixin.qq.com/s?__biz=MzA5MzE4MjgyMw==&mid=401898450&idx=1&sn=fe4f8fa3bb37c5efce14a5567a523422&mpshare=1&scene=1&sr...
  • iyangdi
  • iyangdi
  • 2017-08-23 15:13
  • 269

Android之算法编程题

Android面试之编程题
  • gaolei1201
  • gaolei1201
  • 2016-10-11 12:14
  • 1918
    个人资料
    • 访问:28576次
    • 积分:615
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:37篇
    • 译文:0篇
    • 评论:0条