当您需要对它们进行编程以满足时,您可能知道两个机器人掉线的问题.
两架机器人从飞机上掉落并使用降落伞降落在一条线上(具有不连续的位置),降落伞留在着陆点.这些机器人都朝北,它们相距不远,一个机器人直接落在另一个机器人的东边.
现在要对机器人进行编程,使它们彼此相遇.可以指示他们向左或向右移动到相邻位置并检查当前位置是否存在降落伞.如果遇到另一个机器人,两个机器人都会停在那里,从此过上幸福的生活.
降落伞检查可以有条件地执行任意数量的指令,并且可以无条件地重复任何指令块.写下两个机器人可以同时跟随的程序以及他们遇到的哪些服务员.
你必须创建一个适用于两个机器人的通用算法(一个小的pleonastic)保证机器人会遇到.他们将降落伞留在掉落的地方,他们可以检查当前位置是否有降落伞.
原始声明如下:http://en.wikibooks.org/wiki/Puzzles/Logic_puzzles/Parachuted_Robots 还有一个我不明白的解决方案.如果有人能够理解它,请帮我解释一下.任何其他解决方案将不胜感激.
我对这个问题的第一个想法是将机器人编程为随机选择首先向右或向左,然后做出类似指数搜索的东西:首先向右移动2个位置,然后向左移动4个等等.如果在其中一个"行程"在机器人右侧或左侧找到第二个降落伞(另一个机器人使用的降落伞),机器人只会朝那个方向搜索.这有意义吗?
非常感谢你!
strdup是否每次都分配另一个内存区域并创建另一个指针?
例如:以下代码是否导致内存泄漏?
void x(char** d, char* s){
*d = strdup(s);
}
int main(){
char* test = NULL;
x(&test, "abcd");
x(&test, "etc");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要计算一个大数的阶乘(<= 1.000.000),我需要结果模数1000000007.我写了以下内容,但它在运行时生成错误(test.exe已停止工作).它仅适用于小数字.
long long unsigned modulo(long long unsigned nr){
return nr % 1000000007;
}
long long unsigned fact(long long unsigned nr){
if(nr)return modulo(nr * fact(nr - 1));
else return 1;
}
Run Code Online (Sandbox Code Playgroud)
更新1:
long long unsigned fact(long long unsigned nr){
long long unsigned r = nr;
while(--nr){
r = modulo(r * nr);
}
return r;
}
Run Code Online (Sandbox Code Playgroud) 你们都知道梯子和鸡蛋的问题,你需要找到一个最高的梯级,一个掉落的鸡蛋不会破碎.
有关100个梯级和2个鸡蛋的情况下堆栈溢出问题的解释,但是当你有一个无限的梯子时怎么样?(当然还有无限数量的鸡蛋)
在这种情况下你会如何处理这个问题?Fibonacci是否会搜索解决方案?
非常感谢您的帮助!