ACM Row

Row 题目如下
You’re given a row with n chairs. We call a seating of people “maximal” if the two following conditions hold:

1.There are no neighbors adjacent to anyone seated.
2. It’s impossible to seat one more person without violating the first rule.

The seating is given as a string consisting of zeros and ones (00 means that the corresponding seat is empty, 11 — occupied). The goal is to determine whether this seating is “maximal”.

Note that the first and last seats are not adjacent (if n≠2).

Input
The first line contains a single integer n (1≤n≤1000) — the number of chairs.

The next line contains a string of n characters, each of them is either zero or one, describing the seating.

Output
Output “Yes” (without quotation marks) if the seating is “maximal”. Otherwise print “No”.

Examples
input output
3
101 Yes

4
1011 No

5
10001 No

Note
In sample case one the given seating is maximal.

In sample case two the person at chair three has a neighbour to the right.

In sample case three it is possible to seat yet another person into chair three.

题意:一排有n座的椅子,0表示未坐人,1表示坐人,当满足以下两个条件时输出Yes,否则输出No

1.坐了人的位置旁边不能再坐人,即1旁边不能有1
2.在不违反第一个条件的情况下,不能再多坐一个人,即0的两边必然有一个1

以下是我做题时的思路
思路一(错误):
判断相邻两个数是否相同,相同则No,too easy,WA
思路二(错误):
继续考虑相邻两个数,将n=1-5的情况下Yes的情况列下
n=1: 1
n=2: 10,01
n=3:101,010
n=4:1010,0101,1001
n=5:10101,01010
其中粗体是一开始没有考虑到的
总结规律如下:
①n为偶数时相邻两个不相同②n为奇数时满足第一位为1且相邻两数不相同
满足上述任一点就Yes。easy,WA
很明显规律是错的,因为1001同样符合
思路三:
放弃相邻两数,开始考虑连续的三个数,已知
1.连续3个0
2.连续两个1必然是No
3.当连续两个0在最左侧和最右侧时也是No
除开这三种情况其他都是Yes,1和2好判定,主要是3不好下手。结合1的情况,发现在输入的字符串两侧各添一个0,就可以用1的方法判断3
这样判定之后,AC
PS:不要忘了n=0的情况,当n=0时,第二行是不需要输入的,Windows上按enter键不代表输入结束,先按enter键,再按Ctrl+Z,最后按enter键表示输入结束
PPS:n=3时010和n=5时01010是对的,因为符合最上面的两个条件。作为新手的我下意识以为需要排出一个最大的容量(010换成101),先入为主没看懂题,导致WA了半天

贴上代码
#include <stdio.h>
int main()

#include <stdio.h>
int main()
{
	int n,i,flag=1;
	char str[1005];//str存放座位情况 
	scanf("%d",&n);
	scanf("%s",str+1);//从str的第二位开始存放,第一位放0 
	str[0]=str[n+1]='0';//在表示座位的一串数字前后各加一个0,方便下文判断

	if(n==0)
		flag=0;
	else
	{
		for(i=1;i<=n;i++)
			//在首尾各加一个0的情况下,三个连续的0和两个连续的1导致No 
			if((str[i-1]=='0'&&str[i]=='0'&&str[i+1]=='0')||(str[i-1]=='1'&&str[i]=='1'))
			{
				flag=0;break;
			}
	} 
	if(flag==0)
		printf("No");
	else
		printf("Yes");
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值