权限内最高分请教C#几个数据输出算法 本帖最后由 jtxf3572084 于 2012-04-15 00:20:59 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 caozhy 于 2012-04-15 12:29:53 编辑 (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) 第二个条件你的要求是什么? (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 问题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 } 谢谢大哥指点,这个作业急着交,所以再麻烦大哥几分钟,刚试着把结果组成数组,但result.ToArray()用不好,再麻烦大哥指点几句,新学这门课程,人也比较笨,只能顺藤摸瓜,多实际借鉴了,谢谢 Console.WriteLine(string.Join("\r\n", result.Select((x, i) => new { x, i }).GroupBy(x => x.i / 10).Select(x => string.Join(", ", x)))); 写错了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))))); 我也碰到过类似的问题,用linq的确比用好多重循环简单,方便,效率高,而且还好用,我有几个和楼主相关的几个算法,看了该帖子楼主和caozhy大侠的交流后想向caozhy大侠请教下,在这里借楼主地盘一用,以后你以后也会碰到类似问题。和楼主一样,也是000~999中按条件筛选出符合要求的数据组,三个一组,如123, 234, 456,1、最大值,最小值要求,比如我选择最大值为8,最小值为0,那输出的结果如下:008 080 088 800 808 880018 028 038 048 058 068 078 081 082 083084 085 086 087 108 180 208 280 308 380408 480 508 580 608 680 708 780 801 802803 804 805 806 807 810 820 830 840 850860 870如果最大值选择01,最大值选择89,则输出如下008 009 080 088 090 099 118 119 181 188191 199 800 808 811 818 880 881 900 909911 919 990 991018 019 028 029 038 039 048 049 058 059068 069 078 079 081 082 083 084 085 086087 089 091 092 093 094 095 096 097 098108 109 128 129 138 139 148 149 158 159168 169 178 179 180 182 183 184 185 186187 189 190 192 193 194 195 196 197 198208 209 218 219 280 281 290 291 308 309318 319 380 381 390 391 408 409 418 419480 481 490 491 508 509 518 519 580 581590 591 608 609 618 619 680 681 690 691708 709 718 719 780 781 790 791 801 802803 804 805 806 807 809 810 812 813 814815 816 817 819 820 821 830 831 840 841850 851 860 861 870 871 890 891 901 902903 904 905 906 907 908 910 912 913 914915 916 917 918 920 921 930 931 940 941950 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,输出符合你输入的对子码跨的所有三位数据序列。 本帖最后由 caozhy 于 2012-04-19 01:02:16 编辑 结构数组按特定顺序排序的可能性,高手进 请教各位大侠,winform下webbrower.url.tostring();之后乱码的问题 c#中画矩形,怎样让它矩形框内的填充白色 C#学习问题,,大家来救命啊。。。。 请教一下枚举的问题(主要是和字符串的关系) Fill 出错. C# 添加IIS站点出错! 请指教一下~~~~~~~~~~~~~~ 怎样在dll中生成一个和主窗体一样的form? webform(C#)中ListItem class在winform中如何寫? 为什么我的Form的图标不变 查询结构中的某些个符合要求的结构应该用什么? 如何用cmd 调用 kmlconverter.exe "Zeichnung1.dxf" "C:\\dev\\test1.kml", 不懂 ,在线等!!!
(2) 需要补0很简单:
Console.WriteLine(string.Join(", ", result));
=>
Console.WriteLine(string.Join(", ", result.Select(x => x.ToString().PadLeft(3, '0'))));
(3) 第二个条件你的要求是什么?
如果我想进行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
问题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 }
谢谢大哥指点,这个作业急着交,所以再麻烦大哥几分钟,刚试着把结果组成数组,但result.ToArray()用不好,再麻烦大哥指点几句,新学这门课程,人也比较笨,只能顺藤摸瓜,多实际借鉴了,谢谢
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)))));
我也碰到过类似的问题,用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,输出符合你输入的对子码跨的所有三位数据序列。