我在努力

来源:互联网 发布:翻领中山装淘宝 编辑:程序博客网 时间:2024/04/28 08:08

最近我发了一个贴子。像各位前辈问一个问题,是这样的

给定有n个不同的正数组成的集合W={Wi | Wi >0,i=1,2,,n}和给定正数M,求出M中所有使其和数等于M的子集。即给定一个n个整数的集合W={W1,W2....Wn}和整数M,找出和等于MW的子集。

如:W={11,13,24,7}    M=31    问题的解为:{24,7}{11,13,7}

解可以用布尔向量表示为:
{0
01,1}{1,10,1 }

又如:W={10,20,30,40,50,60}M=60,则有三种不同长度的解,它们分别是{10,20,30},{20,40},{60}.这个问题可以用另一种方法明确表达,使得解是一种明显的长度为n的布尔向量,于是上面的三个解可以用布尔向量表示为:
{1
11000}{010100}{000001}

很多好心的人都很积极地帮我。但我还是个编程的初学者,我刚刚学习算法。他们很多给的答案用的是递归,我看过一些资料说回溯只是递归的一部分。但老师给的题目是要用回溯法做出来的。所以我很苦恼,明天就要交实验报告了,我心里很是着急的。我很努力的思考,晚上有时候两三点才睡。今天也没有午休,准备去上课的时候,我突然灵光一现。我想出了思路。最好,在上数电课的时候,我把它写在了草稿纸上了。现在回来编译果然行的通。此时此刻,我很开心。我想每一个程序员都会有遇到难题阴暗的时候吧,但是不要放弃,保持良好的心态。最终会得到答案的。而今天我的一个小小答案就在这了,只要把它稍微扩展一下就能解决以上问题了。 这里有很多很有能力又善良的人,我会不断学习的。再次感激了。