oj2479: 简易占座

问题描述:新学期开始了,小明提早到自习教室帮同学占座,一本书可以占两个相邻座位,小明只想占一整排座位,求总共需要几本书来占满这一排空余座位?
作者:何知令
发表时间:2017年2月16日
输入:
题目有多组测试数据
先输入一个数据n,表示这一排总共有多少个座位,再输入一行座位状态,"*"为不能占座,"@"为可以占座。
输出;

输出需要几本书占座,如果没有座位可以来占座,则输出"Oh no!"

代码:

/*
问题描述:新学期开始了,小明提早到自习教室帮同学占座,一本书可以占两个相邻座位,小明只想占一整排座位,求总共需要几本书来占满这一排空余座位?
作者:何知令
发表时间:2017年2月16日
输入:
题目有多组测试数据
先输入一个数据n,表示这一排总共有多少个座位,再输入一行座位状态,"*"为不能占座,"@"为可以占座。
输出;
输出需要几本书占座,如果没有座位可以来占座,则输出"Oh no!"
*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    int i;
    int len;
    int seat_num;
    char seat[100];
    while(scanf("%d",&n)!=EOF)
    {
        seat_num=0;
        gets(seat);
        for(len=0; seat[len]!='\0'; len++);
        for(i=0; seat[i]!='\0'; i+=2)
        {
            if(n==1)
            {
                if(seat[0]=='*')
                    printf("Oh no!\n");
                if(seat[0]=='@')
                    printf("1\n");
                break;
            }
            if(n==2)
            {
                if(seat[0]=='*'&&seat[1]=='*')
                    printf("Oh no!\n");
                else
                    printf("1\n");
                break;
            }
            if(seat[i]=='@'&&seat[i+1]=='*')
            {
                seat_num++;
            }
            if(seat[i]=='*'&&seat[i+1]=='@')
            {
                seat_num++;
            }
            if(seat[i]=='@'&&seat[i+1]=='@')
            {
                seat_num++;
            }
            if(i+1==n||i+2==n)
            {
                if(n%2!=0&&seat[len-2]=='*'&&seat[len-1]=='@'&&i+1==n)
                    seat_num++;
                if(seat_num==0)
                {
                    printf("Oh no!\n");
                    break;
                }
                else
                {
                    printf("%d\n",seat_num);
                    break;
                }
            }
        }
    }
    return 0;
}
程序运行结果展示:

知识点总结:数组,判断语句

学习心得:这还是简易版的,前面有个标准版的,愣是做不出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值