Tiling (递推)

本文介绍了一种计算2xn矩形使用2x1和2x2瓷砖铺砌的方法,通过递推公式F(n)=F(n-1)+2*F(n-2)解决铺砖计数问题,并给出了Java实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles?
Here is a sample tiling of a 2x17 rectangle.

Input
Input is a sequence of lines, each line containing an integer number 0 <= n <= 250.
Output
For each line of input, output one integer number in a separate line giving the number of possible tilings of a 2xn rectangle.
Sample Input
2
8
12
100
200
Sample Output
3
171
2731
845100400152152934331135470251
1071292029505993517027974728227441735014801995855195223534251

做法:可转化为
F(n)=F(n-1)+2*F(n-2)
为什么F(n-2)的系数为2呢,因为当我们考虑F(n-1)的时候,即在n位置放置了一个2*1的瓦片,而到n-2时,已经在n-1考虑过了两个2*1的瓦片竖着放的情况,所以不用再考虑一遍了。

大数,直接用java吧,
注意当n=0的时候f(0)=1

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    static BigInteger[] arr=new BigInteger[260];
    static  BigInteger solve(int a)
    {
        if(arr[a]!=null)return arr[a];
        if(a==0)return new BigInteger("1");
        if(a==2)return new BigInteger("3");
        if(a==1)return new BigInteger("1");

        return arr[a]=solve(a-1).add(solve(a-2).multiply(new BigInteger("2"))); 

    }

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext())
        {
            int a=scan.nextInt();
            System.out.println(solve(a));
        }
    }
}
### Tiling Assistant in IT Context In the context of Information Technology (IT), a **Tiling Assistant** can refer to different tools depending on specific use cases such as window management or image processing. #### Tiling Window Manager A tiling window manager is an application that manages windows by arranging them so they do not overlap but instead completely cover the available screen space without gaps. This approach maximizes productivity and efficiency when working with multiple applications simultaneously. Popular examples include i3, AwesomeWM, and xmonad[^1]. For instance, using `i3`, one could define keybindings within configuration files: ```bash # Bind Mod4 + j/k/l/i to change focus between windows. bindsym $mod+j focus left bindsym $mod+k focus down bindsym $mod+l focus up bindsym $mod+i focus right ``` This setup allows users to navigate through tiled layouts efficiently via keyboard shortcuts alone. #### Image Tiling Software Image tiling software refers to programs designed specifically for creating seamless textures from smaller images called tiles. These are often used in game development, web design, and graphic arts where large backgrounds need to be generated dynamically while minimizing memory usage. Tools like GIMP offer plugins supporting this functionality[^2]. An example script written in Python utilizing PIL library might look something like below which demonstrates how simple it would be programmatically create mosaic patterns out of individual pictures: ```python from PIL import Image def tile_image(image_path, output_size=(800, 600)): img = Image.open(image_path) width, height = img.size result_img = Image.new('RGB',output_size,(255,255,255)) for y in range(0,output_size[1],height): for x in range(0,output_size[0],width): result_img.paste(img,(x,y)) return result_img ``` --related questions-- 1. What advantages does adopting a tiling window manager bring over traditional floating ones? 2. How can developers integrate custom scripts into their workflow alongside popular tiling managers? 3. Are there any notable differences among various implementations of tiling algorithms across different platforms? 4. Can you provide more detailed guidance about setting up advanced configurations for a chosen tiling WM? 5. In what scenarios will someone prefer specialized image editing suites over general-purpose solutions during texture creation tasks?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值