本帖最后由 jtxf3572084 于 2012-04-15 00:20:59 编辑

解决方案 »

  1.   

    本帖最后由 caozhy 于 2012-04-15 12:29:53 编辑
      

  2.   

    (1) type 的作用,输入1按照你说的第一条过滤,输入2按照你的第二条过滤,输入3,综合1、2过滤
    (2) 需要补0很简单:
    Console.WriteLine(string.Join(", ", result));
    =>
    Console.WriteLine(string.Join(", ", result.Select(x => x.ToString().PadLeft(3, '0'))));
    (3) 第二个条件你的要求是什么?
      

  3.   

    (1)您的意思int type = Int32.Parse(Console.ReadLine());定义的type是对  Console.WriteLine("type? 1, 2, or 3(1+2)?");中type的再定义?
    如果我想进行4个条件的综合考虑进行过滤的话,是否变成=》Console.WriteLine("type? 1, 2, 3,4,or 5(1+2+3+4)?");一次类推?(2)问题2补0已经解决,那如果我想把输出的数据自定义换行\n,该如何实现?比如我想输出3位一组数据十组后进行换行,请大哥指点.(3)第二个条件不是简单的{ x[0] - x[1], x[1] - x[2], x[2] - x[0] },而是当x[0] - x[1] 小于0时,x[0]+10后再减,比如245,按您的算法,x[0] - x[1]输出2,而实际是12-4,输出8谢谢大哥的热心指点!!!!!!11
      

  4.   

    问题2很简单,result.ToArray() 就是结果组成的数组,你想怎么显示就怎么显示,循环会吧。
    问题3更简单。小学数学问题
    { x[0] - x[1], x[1] - x[2], x[2] - x[0] }
    =>
    { (x[0] + 10 - x[1]) % 10, (x[1] + 10 - x[2]) % 10, (x[2] + 10 - x[0]) % 10 }
      

  5.   


    谢谢大哥指点,这个作业急着交,所以再麻烦大哥几分钟,刚试着把结果组成数组,但result.ToArray()用不好,再麻烦大哥指点几句,新学这门课程,人也比较笨,只能顺藤摸瓜,多实际借鉴了,谢谢
      

  6.   

    Console.WriteLine(string.Join("\r\n", result.Select((x, i) => new { x, i }).GroupBy(x => x.i / 10).Select(x => string.Join(", ", x))));
      

  7.   

    写错了
    Console.WriteLine(string.Join("\r\n", result.Select((x, i) => new { x, i }).GroupBy(x => x.i / 16).Select(x => string.Join(", ", x.Select(y => y.x)))));
      

  8.   


    我也碰到过类似的问题,用linq的确比用好多重循环简单,方便,效率高,而且还好用,我有几个和楼主相关的几个算法,看了该帖子楼主和caozhy大侠的交流后想向caozhy大侠请教下,在这里借楼主地盘一用,以后你以后也会碰到类似问题。
    和楼主一样,也是000~999中按条件筛选出符合要求的数据组,三个一组,如123, 234, 456,1、最大值,最小值要求,比如我选择最大值为8,最小值为0,那输出的结果如下:
    008 080 088 800 808 880
    018 028 038 048 058 068 078 081 082 083
    084 085 086 087 108 180 208 280 308 380
    408 480 508 580 608 680 708 780 801 802
    803 804 805 806 807 810 820 830 840 850
    860 870
    如果最大值选择01,最大值选择89,则输出如下
    008 009 080 088 090 099 118 119 181 188
    191 199 800 808 811 818 880 881 900 909
    911 919 990 991
    018 019 028 029 038 039 048 049 058 059
    068 069 078 079 081 082 083 084 085 086
    087 089 091 092 093 094 095 096 097 098
    108 109 128 129 138 139 148 149 158 159
    168 169 178 179 180 182 183 184 185 186
    187 189 190 192 193 194 195 196 197 198
    208 209 218 219 280 281 290 291 308 309
    318 319 380 381 390 391 408 409 418 419
    480 481 490 491 508 509 518 519 580 581
    590 591 608 609 618 619 680 681 690 691
    708 709 718 719 780 781 790 791 801 802
    803 804 805 806 807 809 810 812 813 814
    815 816 817 819 820 821 830 831 840 841
    850 851 860 861 870 871 890 891 901 902
    903 904 905 906 907 908 910 912 913 914
    915 916 917 918 920 921 930 931 940 941
    950 951 960 961 970 971 980 981按你的最大值最小值输入,以此类推,请教caozhy大侠linq算法。2、上述算法,如果再加上中间数筛选,又该如何?3、跨度条件筛选。所谓跨度就是输出的三位数字中,最大值-最小值的值,比如235,跨度为3,741,跨度6,输出满足你输入跨度值得所有三位数据序列。4、对子码跨筛选。所谓对子码就是把0-9用0、1、2、3、4表示,其中0表示0和5,0和5就为一组对子码,同理1表示1和6,2表示2-7,3表示3-8,4表示4-9,所谓的对子码跨,比如235,用对子码表示,235=》230,则其对子码跨就为其中的最大数-最小数,3-0=3。 再如279,用对子码表示279=》224,其对子码跨为2,输出符合你输入的对子码跨的所有三位数据序列。
      

  9.   

    本帖最后由 caozhy 于 2012-04-19 01:02:16 编辑