我已经浏览了网站上的各种问题,我没有设法通过以下推理找到任何实现这一点的东西(所以我希望这不是重复).
我试图通过C程序解决的问题如下:
作为自动售货机控制器的程序员,您需要计算构成所需更改的最小硬币数量,以便回馈给客户.这个问题的有效解决方案采用动态编程方法,首先计算1美分变化所需的硬币数量,然后计算2美分,然后计算3美分,直到达到所需的变化,每次使用先前的计算硬币数量.编写一个包含该功能的程序,该程序
ComputeChange()
获取有效硬币列表和所需的更改.该程序应反复询问控制台所需的更改并进行相应的调用ComputeChange()
.它还应该使用"缓存",其中保留任何先前计算的中间值以用于后续查找.
在网上四处寻找其他人如何解决它后,我发现下面的例子应用了便士,镍币和硬币:
我尝试以我的代码为基础.但首先,我的代码没有停止,其次,我不确定我是否合并了上面的标题中提到的缓存元素.(我不确定我需要去做那个部分).
任何人都可以帮我找到代码中的缺陷吗?
#include <stdio.h>
#include <limits.h>
int computeChange(int[],int,int);
int min(int[],int);
int main(){
int cur[]={1,2,5,10,20,50,100,200};
int n = sizeof(cur)/sizeof(int);
int v;
printf("Enter a value in euro cents: ");
scanf("%d", &v);
printf("The minimum number of euro coins required is %d", computeChange(cur, v, n));
return 0;
}
int computeChange(int cur[], int v, int n){
if(v < 0)
return -1;
else if(v == 0)
return 0;
else{
int possible_mins[n], i;
for(i = 0; i …
Run Code Online (Sandbox Code Playgroud) 我在Haskell中编写了一个解析器,它以字符串输入的形式解析公式,并生成data
由下面的BNF定义的Haskell 类型.
formula ::= true
| false
| var
| formula & formula
| ? var . formula
| (formula)
var ::= letter { letter | digit }*
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个实例,Show
以便我可以很好地打印我的类型定义的公式(我不想使用deriving (Show)
).我的问题是:如何定义我的功能,以便它可以告诉括号何时是必要的?我不想要太多,也不要太少括号.
例如,给定公式? X . (X & Y) & (? Y . Y) & false
,在解析时,生成数据结构
And (And (Forall "X" (And (Var "X") (Var "Y"))) (Forall "Y" (Var "Y"))) False
Run Code Online (Sandbox Code Playgroud)
我们有
Too little parentheses: ? X . X & Y & ? Y . Y …
Run Code Online (Sandbox Code Playgroud) 首先,如果这不是发布此问题的正确位置,请原谅我,但我不确定它应该去哪里。我目前正在用 VHDL 模拟 Xilinx 中的 ALU。ALU 具有以下输入和输出:
输入
输出
ALU 执行下表中详述的操作:
我已经使用多路复用器和加法器实现了它,如下图所示:
我的问题是:
如何计算溢出标志的值V?
我知道:
(not A(7) and not B(7) and Y(7)) or (A(7) and B(7) and not Y(7))
Run Code Online (Sandbox Code Playgroud)
其中A(7)、B(7)和Y(7)分别是A …
我在 Python 中实现了一个简单的图形数据结构,其结构如下。代码在这里只是为了阐明函数/变量的含义,但它们是不言自明的,因此您可以跳过阅读。
# Node data structure
class Node:
def __init__(self, label):
self.out_edges = []
self.label = label
self.is_goal = False
def add_edge(self, node, weight = 0):
self.out_edges.append(Edge(node, weight))
# Edge data structure
class Edge:
def __init__(self, node, weight = 0):
self.node = node
self.weight = weight
def to(self):
return self.node
# Graph data structure, utilises classes Node and Edge
class Graph:
def __init__(self):
self.nodes = []
# some other functions here populate the graph, and randomly select three goal …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ncurses.h
Ubuntu 上的 C 库在屏幕上放置一个星形 unicode 字符。我试图运行的代码如下:
#include <stdio.h>
#include <wchar.h>
#include <curses.h>
#include <ncurses.h>
#include <stdlib.h>
#include <wctype.h>
#include <locale.h>
int main() {
setlocale(LC_CTYPE, "");
initscr();
cbreak();
WINDOW *win = newwin(0, 0, 0, 0);
refresh();
wrefresh(win);
const wchar_t* star = L"0x2605";
mvaddwstr(3, 3, star);
getch();
endwin();
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到错误
implicit declaration of function ‘mvaddwstr’ [-Wimplicit-function-declaration]
Run Code Online (Sandbox Code Playgroud)
尽管此功能与类似的功能一起在这里得到了很好的记录,但我也无法开始工作。是否有一些我不包括在内的图书馆来完成这项工作?或者有没有其他方法来显示这个角色?我很感激任何帮助。
我正在尝试使用C在linux终端中打印一个unicode星形字符(0x2605).我已经按照网站上其他答案建议的语法,但我没有得到输出:
#include <stdio.h>
#include <wchar.h>
int main(){
wchar_t star = 0x2605;
wprintf(L"%c\n", star);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我很感激任何建议,特别是我如何使用ncurses
图书馆.
我正在实现一个combine :: [[a]] -> [[b]] -> (a -> b -> c) -> [[c]]
给出两个2D列表的函数,将给定的函数应用于2D列表f :: a -> b -> c
的条目.换一种说法:
[[a, b, c], [[r, s, t], [[f a r, f b s, f c t],
combine [d, e, g], [u, v, w], f = [f d u, f e v, f g w],
[h, i, j]] [x, y, z]] [f h x, f i y, f j z]]
Run Code Online (Sandbox Code Playgroud)
现在我怀疑combine = zipWith . zipWith
,因为我已经尝试过,它给了我预期的结果,例如
(zipWith . …
Run Code Online (Sandbox Code Playgroud) 向量和指向其元素的指针的主要问题是,无论何时push_back
调用它们,它们都可以在内存中重新分配,从而使指针无效.
我正在尝试实现后缀trie,其中我将数据结构存储node
在节点向量中.我知道对于大小为n的字符串,数字n(n + 1)/ 2是trie中节点数的上限.
代码也是如此
std::string T = "Hello StackOverflow!";
std::vector<Node> nodes;
int n = T.length();
nodes.reserve(n*(n+1)/2);
Run Code Online (Sandbox Code Playgroud)
保证我创建的任何指针nodes
都不会被无效?即这会保证向量不被重新分配吗?
编辑:我已经实现了这一点,并在运行时不断收到以下错误.
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::at: __n (which is 0) >= this->size() (which is 0)
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
可能导致这种情况的任何想法?
我想使用zip在Haskell中组合两个二维列表,即实现这样的事情
[[1,2,3], [[10, 11, 12], [[(1, 10), (2, 11), (3, 12)],
[4,5,6], `zip'` [13, 14, 15], -> [(4, 13), (5, 14), (6, 15)],
[7,8,9]] [16, 17, 18]] [(7, 16), (8, 17), (9, 18)]]
Run Code Online (Sandbox Code Playgroud)
不使用Prelude之外的任何功能.有没有办法可以这样做,map
或许使用?问题是一个人不能map
zip
超过两个列表.
作为编程赋值的一部分,我需要编写一个递归函数来确定数组中的最大整数.引用确切的任务:
编写一个递归函数,找到给定整数列表中的最大数字.
我提出了两个解决方案,第一个解决方案是两个递归调用:
int largest(int arr[], int length){
if(length == 0)
return 0;
else if(arr[length - 1] > largest(arr,length -1))
return arr[length];
else return largest(arr,length -1);
}
Run Code Online (Sandbox Code Playgroud)
第二个只使用一个,但它使用一个静态变量n
:
int largest(int arr[], int length){
static int n = -1;
if(length == 0)
return n;
else if (arr[length - 1] > n)
n = arr[length - 1];
return largest(arr, length - 1);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否会考虑作弊使用静态变量来完成这样的任务.无论哪种方式,哪一种被认为是更好的形式?是否有一个顶生于两者的递归方法?