我正在审查算法课程中的一些旧笔记,动态编程问题对我来说似乎有点棘手.我有一个问题,我们有无限量的硬币,有一些面额x1,x2,... xn我们想要改变一些价值X.我们正在设计一个动态程序来决定是否可以改变X是否制造(不是最小化硬币数量,或返回哪些硬币,只是真或假).
我已经做了一些关于这个问题的思考,我可以看到这样做的递归方法,就像它...
MakeChange(X, x[1..n this is the coins])
for (int i = 1; i < n; i++)
{
if ( (X - x[i] ==0) || MakeChange(X - x[i]) )
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
转换这个动态程序对我来说并不容易.我怎么能接近这个?
我想使用Visual Basic for Applications执行如下所示的shell命令.
C:\Temp\gc.exe 1
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我是C#的初学者,我正在尝试编写一个应用程序来获取用户输入的两个数字之间的素数.问题是:在大数(有效数字在1到1000000000范围内)时,获取素数需要很长时间,并且根据我正在解决的问题,整个操作必须在很短的时间间隔内进行.这是问题链接以获得更多解释: SPOJ-Prime
这是我的代码中负责获取素数的部分:
public void GetPrime()
{
int L1 = int.Parse(Limits[0]);
int L2 = int.Parse(Limits[1]);
if (L1 == 1)
{
L1++;
}
for (int i = L1; i <= L2; i++)
{
for (int k = L1; k <= L2; k++)
{
if (i == k)
{
continue;
}
else if (i % k == 0)
{
flag = false;
break;
}
else
{
flag = true;
}
}
if (flag)
{
Console.WriteLine(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更快的算法?提前致谢.
我最近面临一个编程算法的提示,我不知道该怎么做.我以前从来没有真正写过算法,所以我对此有点新意.
问题是写一个程序,以确定收银员根据硬币值和硬币数量作为变化回馈所有可能的硬币组合.例如,可能有一个有4个硬币的货币:2美分,6美分,10美分和15美分硬币.这有多少组合等于50美分?
我正在使用的语言是C++,虽然这并不重要.
编辑:这是一个更具体的编程问题,但我如何分析C++中的字符串来获取硬币值?它们是在文本文档中给出的
4 2 6 10 15 50
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,数字对应于我给出的例子)
假设我有一组面额为a1,a2,... ak的硬币.
已知其中一个等于1.
我想使用最小数量的硬币对所有整数1到n进行更改.
任何关于算法的想法.
eg. 1, 3, 4 coin denominations
n = 11
optimal selection is 3, 0, 2 in the order of coin denominations.
n = 12
optimal selection is 2, 2, 1.
Run Code Online (Sandbox Code Playgroud)
注意:不是作业只是修改这个问题
我正在为Scala中的Coin(更改)问题编写递归函数.
我的实现打破了StackOverflowError,我无法弄清楚它为什么会发生.
Exception in thread "main" java.lang.StackOverflowError
at scala.collection.immutable.$colon$colon.tail(List.scala:358)
at scala.collection.immutable.$colon$colon.tail(List.scala:356)
at recfun.Main$.recurs$1(Main.scala:58) // repeat this line over and over
Run Code Online (Sandbox Code Playgroud)
这是我的电话:
println(countChange(20, List(1,5,10)))
Run Code Online (Sandbox Code Playgroud)
这是我的定义:
def countChange(money: Int, coins: List[Int]): Int = {
def recurs(money: Int, coins: List[Int], combos: Int): Int =
{
if (coins.isEmpty)
combos
else if (money==0)
combos + 1
else
recurs(money,coins.tail,combos+1) + recurs(money-coins.head,coins,combos+1)
}
recurs(money, coins, 0)
}
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚在mix中添加了else if语句:
else if(money<0)
combos
Run Code Online (Sandbox Code Playgroud)
它摆脱了错误,但我的输出是1500的东西:(我的逻辑有什么问题?
我有一张桌子
ID|VALUE
Run Code Online (Sandbox Code Playgroud)
VALUE是一个整数字段,可能的值介于0和4之间.如何查询每个值的计数?
理想情况下,结果应该是一个包含6个元素的数组,一个用于计算每个值,最后一个是总行数.
我试图通过扭曲来解决经典的动态编程硬币变化问题.这是一个家庭作业的问题,我不是在寻找完整的解决方案,只是为了指出我做错了什么.
输入:
x,我们想在硬币支付一定的价值.d面额的硬币可用(1C,5C,10C,25C,100C,200C)的代表数输出:
假设:
到目前为止我试图做的事情:
我正在尝试构建一个数组C,这样每个元素C [i],是最小/用于交换金额i的硬币数量.
C [0] = 0
对于C [i],我通过对所有可用的硬币面额采取最小的所有C [i-di]加1来计算它.然后我从可用的硬币中取出我挑选的硬币.
这种方法似乎在简单的情况下工作,但是当我有,例如:
99 99 0 0 0 1 0
我的方法失败了,因为它"便宜"到1美元,它将产生2个硬币的交换,而不是支付精确的99美分(交换99个硬币).
任何指针将不胜感激.
刷新数据透视表和刷新底层数据透视表缓存有什么区别?
换句话说,两者之间是否存在差异
PivotTable.PivotCache.Refresh
PivotTable.RefreshTable
Run Code Online (Sandbox Code Playgroud) 在最小硬币找零问题是一个NP完全问题,但对于某些套币的贪婪算法(选择最大面额第一)的作品.给定一组表示硬币值的整数,确定贪心算法是否足够的最快算法是什么?一个显而易见的方法是建立你的动态编程解决方案,直到最大面额,并看看它是否产生比贪婪方式更好的解决方案.但有没有更快的"数学方式"检测它?
algorithm ×6
c# ×2
vba ×2
c++ ×1
combinations ×1
excel ×1
excel-vba ×1
linq ×1
linq-to-sql ×1
np-complete ×1
primes ×1
scala ×1
shell ×1
sql ×1
windows ×1