WUST Online Judge - 2168: 糖果行动

2168: 糖果行动

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 329  Accepted: 118
[Submit][Status][Web Board]

Description

小矮人为了糖果而战,公主每指挥一次行动,所有的小矮人都同时向右运动,假设所有小矮人运动速度相同,直到其中一个拿到糖果或其中一个到达最右边就全部停止运动,公主再指挥一次,
到达最右边或已经拿到糖果的小矮人会停止运动,其余小矮人还会重复这样运动,直到所有小矮人都拿到糖果,求公主一共指挥了多少次,如果不能拿到所有糖果,输出-1。

Input

多组数据,每组先输入n,m(2<=n,m<=1000),接下来n行,每行m个字符,每一行都有一个小矮人且只有一个糖果,糖果可能在小矮人左边,‘S'表示小矮人的位置,‘C'表示糖果的位置,’.'表示空
地。

Output

输出公主的指挥的次数,如果不能拿到所有糖果,输出-1。

Sample Input

4 7
S..C...
..S...C
.S...C.
S.....C
4 5
.C.S.
S.C..
S...C
S.C..

Sample Output

3
-1

HINT

样例一:第一次指挥第1个小矮人拿到糖果,第二次指挥第2,3个小矮人拿到糖果,第三次指挥第4个小矮人拿到糖果。
样例二:不能拿到第一个糖果。

Author

LL

 

代码如下:

#include <stdio.h>

int main() {
    int i, m, n, flag, temp, cnt;
    char s[1000][1000];
    while (scanf("%d%d", &n, &m) != EOF) {
        int a[1000];
        flag = 1; temp = 0;
        fflush(stdin);
        for (i = 0; i < n; i++) {
            scanf("%s", s[i]);
            fflush(stdin);
            cnt = strchr(s[i], 'C') - strchr(s[i], 'S');
            if (cnt > 0) a[cnt]++;
            else flag = 0;
        }
        for (i = 0; i < 1000; i++)
            if (a[i] > 0) temp++;
        if (flag) printf("%d\n", temp);
        else printf("-1\n");
    }
    return 0;
}

posted on 2018-06-12 00:25  _McR  阅读(146)  评论(0编辑  收藏  举报

导航