`
SIHAIloveYAN
  • 浏览: 119980 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

蓝桥杯java第八届第二题--纸牌三角形

 
阅读更多
        标题:纸牌三角形

        A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
        下图就是一种排法(如有对齐问题,参看p1.png)。

              A
             9 6
            4   8
           3 7 5 2

        这样的排法可能会有很多。

        如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?

        请你计算并提交该数字。

        注意:需要提交的是一个整数,不要提交任何多余内容。

解析:
看上去这个题目可以用搜索的方式全部的搜索,刚开始我想用全排列全部排列一下看看能不能解决,后来发现并不是很好解决,但是如果用递归的话也是可以的,其实最简单的就是用循环了,毕竟是一个填空题,对于时间没有要求,重要的是能把答案算出来。
当时比赛的时候想了很久怎么来判断重复的情况,就是旋转和镜像后相同的情况,后来自己摸索出来了一种方法,在用循环解决的时候可以用,我首先考虑每个数都用数组来装A[9],每个位置的一个,然后判断重复就是将A[0],A[3],A[6]这三个数不同即可,所以在循环的时候,A[3]在A[0]的基础上加一进行循环,A[6]在A[3]的基础上加一进行循环,这样就把这两种重复的情况排除了。

方法一:

    static int[] first = new int[9];  
    static int[] s = new int[9];  
    static int sum = 0;  
    public static void main(String[] args) {  
        sousuo(0);  
        System.out.println(sum/6);  
    }  
    public static void sousuo(int code){  
        if(code==9){  
            if(s[0]+s[1]+s[3]+s[5]==s[0]+s[2]+s[4]+s[8]&&s[0]+s[1]+s[3]+s[5]==s[5]+s[6]+s[7]+s[8])  
                sum++;  
            return;  
        }  
        for (int i = 0; i < 9; i++) {  
            if(first [i]==0){  
                first [i] = 1;  
                s[code] = i+1;  
                sousuo(code+1);  
                first [i] = 0;  
            }  
        }  
    }  

答案:144

还有方法2的话,后面再写,如果有什么问题,欢迎指正。。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    2017年第八届蓝桥杯省赛试题及详解(Java本科B组).docx

    2. **纸牌三角形问题** 这是一个关于排列组合的问题。题目要求将9张纸牌(1到9)排列成一个正三角形,每层的纸牌数量递减,从顶层的1张到底层的3张。解决这个问题需要考虑如何构造这样的序列,使得每层的纸牌都能...

    2020年第十一届蓝桥杯大赛青少年创意编程Scratch浙江省赛编程题第一题翻纸牌

    2020年第十一届蓝桥杯大赛青少年创意编程Scratch组浙江省赛编程题。这次上传的是真题的第一题,如果有需要,我会继续上传

    java程序-蜘蛛纸牌

    【Java程序-蜘蛛纸牌】是一款经典的电脑游戏,由Microsoft公司开发并随Windows操作系统一同发布。在编程领域,实现这样的游戏可以深入理解Java语言特性和面向对象编程思想。本项目中,我们将探讨如何使用Java来设计...

    蜘蛛纸牌(java)实现

    【蜘蛛纸牌(Java)实现】是一个典型的编程项目,它涉及到使用Java语言来构建一个桌面游戏。蜘蛛纸牌是一款流行的单人卡牌游戏,玩家的目标是通过排列卡牌顺序来清除所有卡组。在这个Java实现中,我们可以学习到以下...

    Java-蜘蛛纸牌源代码

    【Java-蜘蛛纸牌源代码】是一个用Java编程语言实现的蜘蛛纸牌游戏的源代码。这个项目包含了一些核心的类和资源文件,使得开发者能够理解游戏的逻辑并可以直接将其集成到自己的Java项目中。 首先,`Spider.java`是...

    纯java编写的蜘蛛纸牌(源码+成品)---感兴趣的可以看看

    《纯Java编写的蜘蛛纸牌游戏详解》 蜘蛛纸牌是一款经典的桌面游戏,深受广大玩家喜爱。本项目采用Java编程语言实现,为开发者提供了一个学习和研究的好案例。以下将详细解析这款蜘蛛纸牌游戏的实现原理、核心功能...

    java 蜘蛛纸牌游戏 完整源码

    java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 完整源码java 蜘蛛纸牌游戏 ...

    java大作业--纸牌游戏

    在本项目中,"java大作业--纸牌游戏" 是一个基于Java编程语言的学生作业,旨在教授和实践面向对象编程、游戏逻辑以及测试方法。在这个游戏中,学生将使用Java语言来设计并实现一个纸牌游戏的框架。由于作业描述提到...

    java翻纸牌游戏-fanpai.rar

    Java翻纸牌游戏是一种常见的编程练习,用于提升程序员的逻辑思维和算法设计能力。这个名为"fanpai.rar"的压缩包包含了一个用Java语言编写的翻纸牌游戏的源代码。下面将详细介绍这个游戏中可能涉及的技术点和相关知识...

    Java实现蜘蛛纸牌小游戏源码.zip

    【Java实现蜘蛛纸牌小游戏源码】是一个基于Java编程语言开发的项目,旨在复现Windows操作系统中的经典小游戏——蜘蛛纸牌。在这个项目中,开发者利用Java的面向对象特性、图形用户界面(GUI)以及事件处理机制,构建...

    纸牌设计 Java 实现

    Amazon 2012 年西雅图面试题 职位 software develop engineer 算法设计题 纸牌 java 实现

    Java蜘蛛纸牌

    【Java蜘蛛纸牌游戏开发详解】 Java蜘蛛纸牌是一款经典的桌面游戏,它的设计灵感来源于微软Windows操作系统中的同名游戏。这款游戏的实现主要依赖于Java编程语言,利用其强大的面向对象特性,以及丰富的图形用户...

    java蜘蛛纸牌的实现

    从给定的文件信息来看,实际上并没有直接提及到"java蜘蛛纸牌的实现"这一主题,而是详述了一个关于学生成绩管理信息系统的Java实验报告。不过,基于标题和描述,我们可以推测,"java蜘蛛纸牌的实现"可能指的是一个...

    java蜘蛛纸牌源代码

    【Java 蜘蛛纸牌】蜘蛛纸牌是一种流行的时间消磨者,它通常由八个牌堆、四个目标区域和一个储备区组成。游戏的目标是将牌堆中的牌按照同花色且递增顺序排列,形成完整的从K到A的序列。在Java实现中,这需要涉及数据...

    纸牌游戏java代码

    【Java实现Solitaire纸牌游戏】 在编程领域,Solitaire纸牌游戏是一种常见的练习项目,它可以帮助初学者理解和应用面向对象编程(OOP)的概念。本项目是用Java语言编写的,提供了清晰的代码结构和详尽的注释,便于...

    java swing实现蜘蛛纸牌

    Java Swing 是Java平台上用于构建图形用户界面(GUI)的一个库,它是Java Foundation Classes (JFC) 的一部分。在这个“java swing实现蜘蛛纸牌”的项目中,开发者使用Swing来创建了一个经典的蜘蛛纸牌游戏。接下来...

    Java实现Windows纸牌

    在编程领域,使用Java语言实现Windows纸牌游戏是一项常见的练习,它可以帮助开发者深入理解面向对象编程、图形用户界面设计以及事件处理等核心概念。在这个项目中,我们将探讨如何利用Java来构建这样一个游戏。 ...

    java蜘蛛纸牌源码分享

    【标题】:“java蜘蛛纸牌源码分享”指的是一个基于Java编程语言编写的蜘蛛纸牌游戏的源代码。蜘蛛纸牌是一种流行的经典单人纸牌游戏,通常在计算机上玩,而这个项目则是将它转化为Java程序的形式。 【描述】:...

    java蜘蛛纸牌游戏

    【Java蜘蛛纸牌游戏】是一种基于Java编程语言开发的桌面游戏,模仿了经典的Windows XP操作系统中的蜘蛛纸牌。这个游戏的设计和实现是Java编程初学者的一个良好练习项目,它涵盖了面向对象编程、图形用户界面(GUI)...

    基于JAVA实现的纸牌游戏.rar

    基于java实现的纸牌游戏,用于课程设计等,解压后请看txt

Global site tag (gtag.js) - Google Analytics