相关疑难解决方法(0)

编程竞赛问题:计数多项式

请看我自己的答案,我想我做到了!


嗨,

编程竞赛的一个示例问题是编写一个程序,找出给定数量的宝石可能有多少多边形.

所以对于两块石头(n = 2),只有一个多面体:

XX
Run Code Online (Sandbox Code Playgroud)

您可能认为这是第二种解决方案:

X
X
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.如果您可以旋转它们,则polyominos不是唯一的.

因此,对于4个宝石(n = 4),有7个解决方案:

X
X   XX   X    X     X   X
X   X    XX   X    XX   XX   XX
X   X    X    XX   X     X   XX
Run Code Online (Sandbox Code Playgroud)

应用程序必须能够找到解决方案 1 <= n <=10

PS:不允许在维基百科上使用polyominos列表 ;)

编辑:当然问题是:如何在Java,C/C++,C#中做到这一点


我用Java开始这个项目.但后来我不得不承认我不知道如何使用有效的算法构建多边形.

这是我到目前为止所做的:

import java.util.ArrayList;
import java.util.List;


public class Main
{

    private int countPolyminos(int n)
    {
        hashes.clear();
        count = 0;
        boolean[][] matrix = new boolean[n][n];
        createPolyominos(matrix, n);
        return count;
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# c++ java algorithm

9
推荐指数
2
解决办法
2105
查看次数

标签 统计

algorithm ×1

c# ×1

c++ ×1

java ×1