C#给出一个值X,判断X是否是该数组内成员的和

magician0089 2014-06-19 01:56:34
题目:有一个整型数组{1,2,4,8,16,32}。假设给出一个值X,判断X是否是该数组内成员的和。例如5是1+4的和。7是1+2+4的和
...全文
154 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
magician0089 2014-06-19
  • 打赏
  • 举报
回复
        static void Main(string[] args)
        {
            int X = 0;//需要判断的数
            while (true)
            {
                Console.WriteLine("Please Enter:");
                X =Convert.ToInt16(Console.ReadLine());
                int[] aa = { 1, 2, 4, 8, 16, 32 };
                List<int> ls = new List<int>();
                for (int i = 0; i < aa.Length; i++)
                {
                    for (int k = 0; k < aa.Length; k++)
                    {
                        for (int y = i + 1; y < aa.Length - k; y++)
                        {
                            int count = aa[i];
                            for (int n = 0; n < k + 1; n++)
                            {
                                count += aa[y + n];
                            }
                            ls.Add(count);
                        }
                    }
                }
                bool f = true;
                for (int i = 0; i < ls.Count; i++)
                {
                    if (ls[i] == X)
                    {
                        Console.WriteLine("Yes");
                        f = false;
                        break;
                    }
                }
                if (f)
                    Console.WriteLine("No");
            }
        }
wanghui0380 2014-06-19
  • 打赏
  • 举报
回复
搞啥米啊,请问“二进制”是什么含义 请问 5的二进制是什么? 101啊!!这个101又表示什么含义,不就是4+1么?? ps:上面那位红孩儿就不要再跳出来说这是特例,人家也许就是一个没规则地集合了
於黾 2014-06-19
  • 打赏
  • 举报
回复
因为数组中元素个数不固定,所以用多重循环做是不可取的 只能递归
magician0089 2014-06-19
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
[quote=引用 7 楼 magician0089 的回复:] 是的,相加的数是不固定的,所以我觉得应该先把所有的和算出来,谁能给点代码
按你原题目给出的数组,相加的和就是1-63[/quote] 考虑原始的就没意思了,就是任意数组
smthgdin_020 2014-06-19
  • 打赏
  • 举报
回复
有难度,这个是数组里任意个数累加等于x。 这个看上去要花不少时间。
於黾 2014-06-19
  • 打赏
  • 举报
回复
引用 7 楼 magician0089 的回复:
是的,相加的数是不固定的,所以我觉得应该先把所有的和算出来,谁能给点代码
按你原题目给出的数组,相加的和就是1-63
magician0089 2014-06-19
  • 打赏
  • 举报
回复
是的,相加的数是不固定的,所以我觉得应该先把所有的和算出来,谁能给点代码
exception92 2014-06-19
  • 打赏
  • 举报
回复
相加的数 又不固定!!!!!!!!!
於黾 2014-06-19
  • 打赏
  • 举报
回复
假设给定数组{n1,n2,n3,n4...nn} 给定数值为m,判断m是否是数组中数值的和 先对数组进行排序,使n1<n2<n3<...<nn 遍历一次,找到第一个ni>m 对前i个元素进行递归遍历,判断是否有和=m
於黾 2014-06-19
  • 打赏
  • 举报
回复
{1,2,4,8,16,32} 这不就是2进制么 如果数组中数字是不规律的,那就只能暴力遍历了 如果就是这个数组,判断是否在1-63之间就行.
xdashewan 2014-06-19
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
把数组按从小到大次序排号序,然后从第一个数开始判断<7就累加下一个,=7就返回true,>7了就返回false
无视吧,这思路不对,不一定是顺序相加的
magician0089 2014-06-19
  • 打赏
  • 举报
回复
求具体代码~!
xdashewan 2014-06-19
  • 打赏
  • 举报
回复
把数组按从小到大次序排号序,然后从第一个数开始判断<7就累加下一个,=7就返回true,>7了就返回false

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧