我真的被困住了,而且充满了怀疑。
这个问题要求验证可能的可能性,并排列n个多米诺骨牌。
当我说“命令”的时候,它不一定是12--23
因此,接受的输入是
3/多米诺骨牌数
1 3/
[1]可能性
[3]2/
2/多米诺骨牌数
3 4
2 5
0 //表示多米诺骨牌的结束
对此输入的可接受输出为
测试1
是
51/13/32[3]
测试2
不是
不是
在基本范围以下,以C为单位
#include <stdio.h>
int main(){
int NumOfDominoes = 1, Test = 1, Dominoes=1;
int E,D;
int boolean=1;
while( NumOfDominoes != 0 )
{
scanf("%d",&NumOfDominoes);
while( Dominoes < NumOfDominoes)
{
scanf("%d %d",&E,&D);
Insert( E, D); // the domino itself
Dominoes++;
}
}
for( Test ; Test <= NumOfDominoes ; Test++)
{
printf("Test %d\n",Test);
boolean = validity(); //returns 1 if the sequence of dominoes present equal values, i.e, possible possibilities
if( boolean = 1) printf("yes\n");
else {printf("no\nno\n");}
masterFunction( E, D); //put in order the dominoes in order, 01|13|35...
}
return 0;
}如何才能看到缺少三个“小”函数:Insert()、validity()和masterFunction(E,D)。
这里是我塞的地方,我不知道如何比较这个多米诺骨牌,排列整齐,以及如何正确插入。我什么都不知道。:(
如果能提供任何帮助,我将不胜感激。谢谢。
发布于 2016-05-05 19:36:44
这个问题的解决方案称为深度优先搜索,它通常使用递归实现。
选择一个开始的多米诺骨牌(在两个方向之一)。这限制了链中第二张多米诺骨牌的选择和方向。继续添加多米诺骨牌,直到对下一个多米诺骨牌没有有效的选择,或者添加了所有多米诺骨牌。
如果所有的多米诺骨牌都被添加了,那么你就完成了,答案是“是的”。
如果你试过所有可能的开始多米诺骨牌和所有可能的后续多米诺骨牌,没有链使用所有多米诺骨牌,那么答案是“否”。
https://stackoverflow.com/questions/37058492
复制相似问题