旗帜

传送门已损坏

题目描述

tigertang决定在二中九十校庆那天,用一些白色、蓝色和红色的彩带来装饰他的商店橱窗。他希望满足以下条件:
1.相同颜色的彩带不能放在相邻的位置。
2.一条蓝色的彩带必须放在一条白色的彩带和一条红色的彩带中间。
在这里插入图片描述
计算满足要求的放置彩带的方法数。

输入格式

一行,一个整数n,表示彩带的数目。

输出格式

装饰橱窗的可行方法数m。

输入样例

3

输出样例

4

数据范围

对30%的数据,1<=n<=15。
对100%的数据,1<=n<=45。

题目大意

给定三种颜色不同的彩带:白色、蓝色、红色。现在要求相邻的旗帜不能彩带,且蓝色彩带必须放在白色彩带和红色彩带的中间。试求放置 nn条彩带的合法方案总数。n≤45

解题思路

动态规划
设f[i]为i条彩带的合法方案数。
考虑第i-1条彩带如果为蓝色,当第i-2条彩带为白色,则第i条彩带为红色;当第i-2条彩带为红色,则第i条彩带为白色。换言之,若第i-1条彩带为蓝色,第i条彩带的颜色根据第i-2条彩带颜色而固定,此时方案数为f[i-2]。
考虑第i-1条彩带为白色或者红色,则第i条彩带的颜色一定为红色或者白色。此时方案数为f[i-1]。
综上,动态转移方程:f[i]=f[i-2]+f[i-1]

参考代码

在此附上本人的 AC 代码,仅供参考,请勿抄袭:

#include<bits/stdc++.h>
using namespace std;
//const int maxn=1e6*2;
inline int read()
{
    char c=getchar();int x=0;bool f=0;
    for(;!isdigit(c);c=getchar())f^=!(c^45);
    for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
    if(f)x=-x;return x;
}
long long n,f[1001]={0,2,2};
int main()
{
	cin>>n;
	for(int i=3;i<=n;i++)
	{
		f[i]=f[i-1]+f[i-2];
	}
	cout<<f[n];
}

——————————QAQ

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity UI 旗帜可以理解为在Unity游戏引擎中使用的用户界面元素,用于展示和传递特定信息或功能。在开发游戏或其他交互应用程序时,UI 旗帜可以作为一个重要的组成部分。 首先,Unity UI 旗帜可以用于显示玩家的状态或信息。例如,在一个角色扮演游戏中,玩家可以在屏幕上看到他们的角色血条、能量条、经验条等信息,这些UI 旗帜可以实时反映角色的变化,并帮助玩家了解角色的状态。 其次,Unity UI 旗帜也可以用于菜单或选项界面,以便玩家可以与游戏进行交互或进行设置。玩家可以点击不同的UI 旗帜来选择游戏模式、音频设置、图形设置等。这些UI 旗帜可以提供直观的界面,使玩家能够轻松地进行操作和管理。 此外,Unity UI 旗帜还可以用于显示游戏中的任务或目标。比如,在一款冒险游戏中,玩家可以通过UI 旗帜来了解当前任务的进度、目标的位置等信息,从而引导他们在游戏中前进。 最后,Unity UI 旗帜还可以用于显示游戏中的提示或帮助信息。当玩家面临困难或不清楚下一步该做什么时,UI 旗帜可以提供相关的提示或帮助,使玩家能够更好地理解游戏规则或解决问题。 综上所述,Unity UI 旗帜在游戏开发中具有重要的作用,它可以用于显示玩家状态和信息、提供交互界面、显示任务和目标、以及提供提示和帮助。通过合理利用和设计,UI 旗帜能够提升游戏的交互性和用户体验,使玩家更好地享受游戏乐趣。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值