我试图做这个问题,给定某些面额的硬币,我想找到最大数量的硬币进行更改。
实施例 说,我给了价值3和5的硬币,我想改变15,解决方案是{3,3,3,3,3}(感谢JoSSte指出) 同样地,比如说,给定值为3和5的硬币,并且我想要为7进行更改,我需要显示“无法解决方案”
我能够按照以下方式查找最小硬币数
import java.util.ArrayList;
import java.util.Arrays;
public class Minimum
{
static int[] options = {5,3};
public static void main(String[] args)
{
ArrayList<Integer> result = new ArrayList<Integer>();
result = fun(15);
if(result.size() == 999)
System.out.println("Not possible to make change with this denomination");
else
{
for(int i = 0;i<result.size();i++)
System.out.print(result.get(i));
}
}
static ArrayList<Integer> fun(int n)
{
if(n == 0)
{
ArrayList<Integer> totalret = new ArrayList<Integer>();
return totalret;
}
if(n < 0)
{
ArrayList<Integer> totalret = new ArrayList<Integer>(Arrays.asList(new Integer[999]));
return totalret;
}
ArrayList<Integer> totalret = new ArrayList<Integer>(Arrays.asList(new Integer[999]));
for(int i = 0;i<options.length;i++)
{
ArrayList<Integer> reci = fun(n-options[i]);
ArrayList<Integer> reti = new ArrayList<Integer>();
reti.addAll(reci);
reti.add(options[i]);
if(reti.size() < totalret.size())
totalret = reti;
}
return totalret;
}
}
请注意,我有一个名为if(n&lt; 0)的支票,其中通过将大小设置为一个非常大的数字,从选项中删除了未加总和的组合。
但是,如何修改以上内容以查找最大硬币数
答案 0 :(得分:1)
对于您的解决方案,您必须检查n = 1,2的条件。如果n = 1,2,你可以将ans作为999返回。
您的功能必须如下
static ArrayList<Integer> fun(int n)
{
if(n == 0)
{
ArrayList<Integer> totalret = new ArrayList<Integer>();
return totalret;
}
if(n < 0 || n==1 || n==2)
{
ArrayList<Integer> totalret = new ArrayList<Integer>(Arrays.asList(new Integer[999]));
return totalret;
}
ArrayList<Integer> totalret = new ArrayList<Integer>(Arrays.asList(new Integer[999]));
for(int i = 0;i<options.length;i++)
{
ArrayList<Integer> reci = fun(n-options[i]);
ArrayList<Integer> reti = new ArrayList<Integer>();
reti.addAll(reci);
reti.add(options[i]);
if(reti.size() < totalret.size())
totalret = reti;
}
return totalret;
}
希望这应该有效..
答案 1 :(得分:0)
这是c ++中的硬币更改dp代码。
class BasePage(object):
def __init__(self, driver):
self.driver = driver
self.driver.implicitly_wait(20)
class MappingsPage(BasePage):
table_id = WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((*MainPageLocators.mappings_details_savedpage_table)))
rows = table_id.find_elements(By.TAG_NAME, "tr")
for row in rows:
# Get the columns
col_name = row.find_elements(By.TAG_NAME, "td")[1]
col_variable = row.find_elements(By.TAG_NAME, "td")[2]
etc...