我需要給出可能的最小變化量。我輸入了幾個案例,每個案例都有一些硬幣(1個不一定是它們的一部分),我想要的數量的數量然後我輸入不同的硬幣和不同的號碼進行測試。最小變化量C++
我不知道爲什麼我的程序不工作。由於1不一定是變化的一部分,所以我不得不稍微調整程序。
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<functional>
#include<numeric>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n,i;
cin>>n;
int f=n,c,m;
int flag=0;
int m1;
int coins[100];
vector <int>storage(100,0);
vector <int> testcases(1000,0);
vector <int> answers(1000,-1);
while(n>0)
{
cin>>c;
cin>>m;
for(i=1;i<=c;i++)
{
cin>>coins[i];
}
for(i=1;i<=c;i++)
{
cin>>testcases[i];
}
m1=*max_element(testcases.begin(),testcases.end());
for(i=0;i<1000;i++)
{
answers[i]=-1;
}
i=0;
while(m1>=i)
{
i++;
flag=0;
for(int j=1;j<=c;j++)
{
if(i-coins[j]>=0)
{
storage[j]=answers[i-coins[j]];
flag=1;
}
else
storage[j]=-2;
}
if(flag==1)
{answers[i]=*min_element(begin(storage), end(storage),
[](int t1, int t2) {return t1 > 0 && (t2 <= 0 || t1 < t2);});
flag=0;
}
else
answers[i]=0;
}
if(m1==i)
{
for(int y=1;y<=m;y++)
{
cout<<answers[testcases[y]]<<endl;
}
}
}
return 0;
}
編輯:所謂「不工作」我的意思是它實際上沒有做anything.Its需要輸入並執行nothing.I認爲它進入一個無限循環。
「不工作」不是一個好的描述。請說明你的問題。 – Appleshell
詳細說明:程序無法編譯? (如果是這樣,你從編譯器中得到了什麼錯誤?)它會崩潰嗎(如果是這樣,你如何編譯並運行它?)它會編譯並運行,但會產生意外的輸出嗎?如果是這樣,你得到的輸出是什麼 - 你期望得到什麼? – jalf
好吧,它沒有給我任何東西,它運行。但多數民衆贊成it.takes輸入,什麼都不做。debiugging的東西不工作inmy編譯器。 – LoveMeow