ccsu oj 1509 Build the given towers

2024-01-24 20:38
文章标签 build oj given towers 1509 ccsu

本文主要是介绍ccsu oj 1509 Build the given towers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:  
有三种正方形的1*1的方块,颜色分别为红黄蓝,用0,1,2表示,还有一种1*2的灰色方块(它只能竖着摆),用b表示,先给定一串字符串,和能摆放的宽度和每种方块的数量,判断能否合理的摆放这些方块,使得从左往右看能摆出字符串要求的形状。  
模拟题,从右往左摆,从上往下摆,遇到奇数个b就重新开辟一行,宽度随之增加。模拟摆方格的过程,并且判断方格的个数和摆放宽度是否满足要求。
Sample Input 
1 1 1
1
2
6
012
012bb
bb0
21bb
21b
1bb20
Sample Output 
valid
valid
valid
valid
valid
valid
#include<stdio.h>
#include<string.h>
int rest[100];
char str[50];
int cube[4];
int a,b,c,d,wide,w,n;
int main()
{
while(scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&wide,&n)!=EOF)
{
while(n--)
{
scanf("%s",str);
int w=1;
bool flag = true;
int len=strlen(str);
memset(rest,0,sizeof(rest));
cube[0]=a,cube[1]=b,cube[2]=c,cube[3]=d;
for(int i=len-1;i>=0;i--)
{
if(str[i]=='0'||str[i]=='1'||str[i]=='2')
{
cube[str[i]-'0']--;
if(cube[str[i]-'0']<0) {flag=false; break;}
} 
else if(str[i]=='b')
{
if(i==0)  {  flag=false;  break; }
int sum=0;
while(i>=0&&str[i]=='b') { sum++; i--;} 
i++;
cube[3]-=(sum+1)/2; 
if(sum%2)
{
if(i>0) rest[w]=(i-1);
else  rest[w]=1;
w++;
}
}  
}  
if(w>wide) flag=false;
int tot=0,ans=0;
for(int i=1;i<=w;i++) 
{
tot+=rest[i]/2;
ans+=rest[i]%2;
}
tot-=cube[3];  if(tot<0) tot=0;   
if(ans+tot*2>cube[0]+cube[1]+cube[2])  flag=false;
if(flag)  printf("valid\n");
else  printf("invalid\n");
}
}
return 0;
}

这篇关于ccsu oj 1509 Build the given towers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/640928

相关文章

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

【UVA】10066-The Twin Towers(最长公共子串问题)

赤裸裸的最长公共子串问题,没什么好说的,注意的是,每组数据后面都有一个空行。 13996019 10066 The Twin Towers Accepted C++ 0.015 2014-08-06 00:34:53 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MSMemory Limit: 32768 K Total Submit: 7(5 users)Total Accepted: 6(5 users)Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出。 Input 第一行是一个整

每日OJ_牛客_求和(递归深搜)

目录 牛客_求和(递归深搜) 解析代码 牛客_求和(递归深搜) 求和_好未来笔试题_牛客网 解析代码         递归中每次累加一个新的数,如果累加和大于等于目标,结束递归。此时如果累加和正好等于目标,则打印组合。向上回退搜索其它组合。此题本身就是一个搜索的过程,找到所有的组合。 #include <iostream>#include <cmath>#in

兔子-build.gradle中代码的含义

//声明构建的项目类型,这里当然是android了apply plugin: 'com.android.application'//设置编译android项目的参数android {// SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。compileSdkVersion 23//构建工具的版本,其中包括了打包工具aapt、dx等等。// 这个工具的目

The `XXXUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build......

出现的警告: [!] The `ColorInHeartUITests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-ColorInHeart-ColorInHeartUITests/Po

OJ-0905

题目 示例1: 输入:10 10 56 34 99 1 87 8 99 3 255 6 99 5 255 4 99 7 255 2 99 9 255 213 4输出:99 示例2: 输入:10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 213 5输出:255 import java.util.

6-通过Java代码build cube

转:http://www.cnblogs.com/hark0623/p/5580632.html 通常是用于增量 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3

关于No resource found that matches the given name 'Theme.AppCompat.Light' No resource found that ma

关于No resource found that matches the given name  'Theme.AppCompat.Light' No resource found that matches the given name   'android:Widget.Material.ActionButton.CloseMode'. 我的上一遍文章 http://blog.csdn.net