我需要维基百科的一些澄清:背包,部分
因此,该解决方案将在O(nW)时间和O(nW)空间中运行.另外,如果我们只使用一维数组m [W]来存储当前最优值并将该数组传递i + 1次,每次从m [W]重写为m [1],我们得到相同的结果仅用于O(W)空间.
我无法理解如何将2D矩阵转换为1D矩阵以节省空间.另外,rewriting from m[W] to m[1] every time意味着什么(或者它是如何工作的).
请举一些例子.假设我有{V,W} - > {(5,4),(6,5),(3,2)},K = 9.
一维阵列怎么样?
我为我正在做的作业制作了一些测试文件,但我不确定为什么vim会在文件末尾给我额外的字符.
所以我创建了一个包含A,B和C的"ABC"文件,最后没有新行.所以像
vim ABC
AAAABBBCC
Run Code Online (Sandbox Code Playgroud)
我输出了部分读取代码
46 while(1) {
47 ch = infile.get();
48 if(infile.eof()) {
49 break;
50 }
51 cout << '~' << ch << '~' << (int)ch << '~' << endl;
52 v[(int)ch]++;
53 }
Run Code Online (Sandbox Code Playgroud)
我得到了
~A~65~
~A~65~
~A~65~
~A~65~
~A~65~
~B~66~
~B~66~
~B~66~
~C~67~
~C~67~
~
~10~
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我在输入文件中输入换行符