使用链接列表比较和整理C中的Domino

时间:2016-05-05 19:12:01

标签: c linked-list

我真的被困了,并且怀疑很多。

这个问题要求验证可能的可能性,并按顺序排列n个多米诺骨牌。

当我说"秩序"它不一定是12 | 23 | 34,这个顺序是多米诺骨牌的基本规则51 | 12 | 23 | 36 | 62。

因此,接受的输入是

3 //多米诺骨牌的数量
1 3 //
1 5 //可能性
3 2 //
2 //多米诺骨牌的数量
3 4
2 5
0 //表示多米诺骨牌结束

并且此输入的接受输出将是

测试1

51 | 13 | 32 |
测试2
没有
没有

在基本范围之下,在C

Insert()

你怎么能看到缺少三个"小"函数,validity()masterFunction(E,D)* the page hello-world auto-reloads the preview on the right c9 panel */ /* global angular */ /* angular is defined in html document as a src'ed js file. linter says to declare as a global in a comment here */ (function(){ // variables are declared at the top of the function's scope // three default entries to start with var entries = [{ title: 'Title1', body: 'This is a test, 1.', createdOn: 1397490980837 }, { title: 'Title2', body: 'This is a test, 2.', createdOn: 1397490980837 }, { title: 'Title3', body: 'This is a test, 3.', createdOn: 1397490980837 }]; var app = angular.module('blogPosts', []); app.controller('EntriesController', function(){ // `this` entry, the current entry for this method, is defaulted to an empty object this.entry = {}; this.entries = entries; // method is called when adding an entry this.addEntry = function() { // does this.entry exist here? good way to find out is with `console.log(this.entry);` or `debugger;` this.entry.createdOn = Date.now(); entries.push(this.entry); console.log("entries",entries); // reset `this.entry` back to an empty object this.entry.$setPristine(); this.entry = {}; //this.entry.$setPristine = {}; //this.entry.$clearForm = {}; }; }); })();

这是我坚持的地方,我不知道如何比较这些多米诺骨牌,按顺序排列以及如何正确插入。我什么都不知道...... :(

如果有任何帮助,我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

此问题的解决方案称为depth-first search,通常使用递归实现。

选择一个起始的多米诺骨牌(两个方向中的任何一个)。这限制了链中第二个多米诺骨牌的选择和方向。继续添加多米诺骨牌,直到下一个多米诺骨牌没有有效选择,或者添加了所有多米诺骨牌。

如果已经添加了所有的多米诺骨牌,那么你已经完成了,答案是肯定的。

如果你已经尝试了所有可能的后续多米诺骨牌的所有可能的起始多米诺骨牌,并且没有链条使用所有多米诺骨牌,那么答案就是“不”。