我在pset3(cs50)中做tideman问题,但是我不能区分我的程序和函数look_pairs的正确程序之间的区别。
:) tideman.c exists
:) tideman compiles
:) vote returns true when given name of candidate
:) vote returns false when given name of invalid candidate
:) vote correctly sets rank for first preference
:) vote correctly sets rank for all preferences
:) record_preferences correctly sets preferences for first voter
:) record_preferences correctly sets preferences for all voters
:) add_pairs generates correct pair count when no ties
:) add_pairs generates correct pair count when ties exist
:) add_pairs fills pairs array with winning pairs
:) add_pairs does not fill pairs array with losing pairs
:) sort_pairs sorts pairs of candidates by margin of victory
:) lock_pairs locks all pairs when no cycles
:( lock_pairs skips final pair if it creates cycle
lock_pairs did not correctly lock all non-cyclical pairs
:) lock_pairs skips middle pair if it creates a cycle
:) print_winner prints winner of election when one candidate wins over all others
:) print_winner prints winner of election when some pairs are tied
这是我的程序,我在正确的程序之间做了一点区别。我没有判断makeCycle(winner,I)的返回,而是返回这个函数,你可以在我的代码中看到区别。
bool makeCycle(int winner, int loser)
{
if (winner == loser) {
return true;
}
for (int i = 0; i < candidate_count; i ++) {
if (locked[loser][i]) {
return makeCycle(winner, i);
}
}
return false;
}
// Lock pairs into the candidate graph in order, without creating cycles
void lock_pairs(void)
{
// TODO
for(int i = 0; i < candidate_count; i ++) {
if (!makeCycle(pairs[i].winner, pairs[i].loser)) {
locked[pairs[i].winner][pairs[i].loser] = true;
}
}
return;
}
这是正确的版本,但我认为我的程序和正确的版本是一样的,我不知道为什么我的程序会造成这个错误。
bool makeCycle(int winner, int loser)
{
if (winner == loser) {
return true;
}
for (int i = 0; i < candidate_count; i ++) {
if (locked[loser][i]) {
if(makeCycle(winner, i)){
return true;
}
}
}
return false;
}
// Lock pairs into the candidate graph in order, without creating cycles
void lock_pairs(void)
{
// TODO
for(int i = 0; i < candidate_count; i ++) {
if (!makeCycle(pairs[i].winner, pairs[i].loser)) {
locked[pairs[i].winner][pairs[i].loser] = true;
}
}
return;
}```
这两个版本并不相同。
这里:
if(makeCycle(winner, i)){
return true;
}
当MakeCycle(..)
返回false
时,函数不返回。而在第一个版本中:
return makeCycle(winner, i);
函数总是返回调用的结果。
也许你被误导了
if (condition) return true; else return false;
与…相同的
return condition;
但是
if (condition) return true;
不等于
return condition;
第一个版本在第一次迭代中返回,其中locked[loser][i]
为true
。第二个版本仅在locked[loser][i]
和makecycle(...)
均为true
时返回,否则继续循环。
在您的程序中
for (int i = 0; i < candidate_count; i ++) {
if (locked[loser][i]) {
return makeCycle(winner, i);
}
}
返回false
的频率比
for (int i = 0; i < candidate_count; i ++) {
if (locked[loser][i]) {
if (makeCycle(winner, i)) {
return true;
}
}
}
return false;
这是因为在第二个解决方案中,如果makecycle(winner,i)
失败,它不会返回false;它继续到下一个locked[loser][i]
。如果所有锁定的[loser][i]
无法触发对MakeCycle(winner,i)
的成功调用,则正确的解决方案仅返回false
。您的解决方案将返回第一个makecycle(winner,i)
返回的内容。
为什么最后输出的是“WuffRingding”而不是“RingdingRingding”? 为什么最终输出是“颤动”而不是“振铃”?为什么最终输出是“颤动”而不是“振铃”?
使用FIXED_WINDOW算法时,"validDuration","MaxAmount"参数是什么意思?
为什么我会得到这个错误?为什么尽管导入了junit断言,我还是不能编写而是必须编写?为什么我不能使用mockito中的(message is不能解析'currencyexchange_logictest'中的方法'when')。是不是因为依赖关系,它们出了什么问题?
上面是代码,想执行'person1.func3()'。 结果如下图
我目前正在尝试用cubey地形制作一个基本游戏,类似于Minecraft classic。我的第一个问题: 如何在VBO中存储多维数据集列表,然后在更改该数据时重新生成该列表?我当前呈现的立方体如下所示: 我知道我需要使用和来修改VBO,但是如何存储多维数据集并在需要时删除它们?我应该使用ArrayList吗?另外,有人告诉我,我渲染立方体的方式是错误的,因为每个人都说我只渲染一个具有新坐标的立方
我似乎不明白我的程序有什么问题。作业是CS50第二周习题集中的“替换”。目标是创建一个程序,在用户将26个字符的密钥键入argv[2]后,该程序将用户键入的文本转换为加密文本,在加密文本中,用密钥切换常规字母表。我的代码几乎可以完全正常工作,但是对于我想要加密的每个文本,有一两个字母(每次都会更改),输出是错误的。 e、 g/替换YUKFRNLBAVMWZteogxhcipjsqd 这里是CS50