瓷砖问题在讨论
2014-04-08 22:29
465 查看
问题描述
有一长度为N(1<=N<=10)的地板,给定三种不同瓷砖:一种长度为1,一种长度为2,另一种长度为3,数目不限。要将这个长度为N的地板铺满,并且要求长度为1的瓷砖不能相邻,一共有多少种不同的铺法?在所有的铺设方法中,一共用了长度为1的瓷砖多少块?
例如,长度为4的地面一共有如下4种铺法,并且,一共用了长度为1的瓷砖4块:
4=1+2+1
4=1+3
4=2+2
4=3+1
编程求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格式
第一行有一个数,代表所有不同的瓷砖铺放方法的总数。
第二行也有一个数,代表这些铺法中长度为1的瓷砖的总数
样例输入
4
样例输出
4
4
有一长度为N(1<=N<=10)的地板,给定三种不同瓷砖:一种长度为1,一种长度为2,另一种长度为3,数目不限。要将这个长度为N的地板铺满,并且要求长度为1的瓷砖不能相邻,一共有多少种不同的铺法?在所有的铺设方法中,一共用了长度为1的瓷砖多少块?
例如,长度为4的地面一共有如下4种铺法,并且,一共用了长度为1的瓷砖4块:
4=1+2+1
4=1+3
4=2+2
4=3+1
编程求解上述问题。
输入格式
只有一个数N,代表地板的长度
输出格式
第一行有一个数,代表所有不同的瓷砖铺放方法的总数。
第二行也有一个数,代表这些铺法中长度为1的瓷砖的总数
样例输入
4
样例输出
4
4
import java.util.*; public class Main2 { public static int n, sum, sum1; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); n = sc.nextInt(); search(0, 0, ""); System.out.println(sum + "\n" + sum1); } public static void search(int xn, int result, String str) { if (xn > 3) { return; } if (result > n) { return; } //假如结果等于n时 if (result == n) { char[] tmp = str.toCharArray(); for (int i = 0; i < tmp.length; i++) { //计算1的个数 if (tmp[i] == '1') sum1++; //System.out.print(tmp[i] + " "); } //System.out.println(); sum++; // System.out.println(xn + "A"); return; } // 1不能相邻,相邻的话用2代替 for (int i = (xn == 0 ? 1 : (xn == 1 ? 2 : 1)); i <= 3; i++) { //递归 search(i, result + i, str + i); } } }
相关文章推荐
- Tsinsen_A1024. 瓷砖问题再讨论
- 1024 瓷砖问题再讨论(java)
- A1024. 瓷砖问题再讨论
- 刷清橙OJ--A1024.瓷砖问题再讨论
- A1024. 瓷砖问题再讨论
- 写引擎的时机问题(8-19日与CGamer讨论)
- 2006.6.2 13:30 在学校人文学院306进行小组讨论,关对一家公司的CRM进行讨论,发现两点问题
- 编码讨论---乱码问题之终极解决
- 讨论构造函数的N种调用情况的问题
- Android4.4中Email打开网页URL问题-欢迎大家来讨论
- 关于FPGA设计仿真和硬件实测不一致问题的讨论
- 讨论2-sat建设和解决问题
- 关于需求文档落地、团队默契、责任问题的讨论
- Anole控件问题讨论
- 讨论了好久的问题,IE、Firefox下CSS图片垂直居中的问题
- C语言中结构体赋值问题的讨论
- Response.ContentType 控制输出文件类型(讨论下载文件问题)
- 关于Http实时请求重复处理的问题请教和讨论
- 个人问题记录,不作讨论
- const vector<int> 和 vector<const int>问题讨论