मैं गतिशील प्रोग्रामिंग के लिए एक नया हूं और एसपीओजे (http://www.spoj.pl/problems/KNAPSACK/ पर पूर्णांक knapsack समस्या का प्रयास किया है)। हालांकि, दिए गए परीक्षण मामलों के लिए मेरा समाधान सही आउटपुट नहीं दे रहा है। यदि आप सुझाव दे सकते हैं कि मेरे द्वारा निम्नलिखित कार्यान्वयन सही है तो मैं आपका आभारी हूं। कृपया ध्यान दें कि परिवर्तनीय back
बैकट्रैकिंग के लिए है, जिसके बारे में मुझे यकीन नहीं है कि कैसे करना है। मुझे उम्मीद है कि बैकट्रैकिंग को लागू करने में आपकी मदद भी होगी। धन्यवाद।इंटेगर नॅपैकैक को हल करना
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int knapsack(int value[], int weight[], int n, int C,
vector <int>&back)
{
int *M = new int[C + 1];
int k;
int i, j, tmp, pos;
for (i = 1; i <= C; i++) {
M[i] = M[i - 1];
pos = i - 1;
for (j = 0; j < n; j++) {
k = i - weight[j];
if (k >= 0)
tmp = M[k] + value[j];
if (tmp > M[i]) {
M[i] = tmp;
}
}
back.push_back(pos);
}
int ans = M[C];
delete[]M;
return ans;
}
int main()
{
int C, N;
cin >> C >> N;
int* value = new int[N+1];
int* weight = new int[N+1];
for (int i = 0; i <= N; i++) {
cin>>value[i]>>weight[i];
}
vector <int>back(N, 0);
cout<<knapsack(value,weight,N,C,back)<<endl;
return 0;
}
यहाँ सही इनपुट/आउटपुट परीक्षण मामलों हैं:
Input:
4 5
1 8
2 4
3 0
2 5
2 3
Output:
13
हालांकि, उत्पादन है कि मैं हो रही है 17
है।
का उपयोग "हालांकि, दिए गए परीक्षण मामलों मेरी समाधान सही उत्पादन न जताए के लिए।" कौन सा इनपुट? आप किस आउटपुट को सही मानते हैं? और आपको वास्तव में क्या आउटपुट मिला? – abelenky
@EitanT: नहीं, इसकी नहीं। – hytriutucx