hunnu 11269 The Status is Not Quo (简单模拟)

http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11269

 

题意:
给一个n*m的格子,每个格子有八的端口与其它相连告诉你一些格子的内部
连接,最后给你线的一端,求另一端在哪里
思路:
很水很暴力。直接搜索就行,只是输入比较恶心,没有固定的连接数,要用
换行符来判断。

 

我的代码:

/*
program:hunnu_11269
author:BlackAndWhite
*/ 
#include<stdio.h>
#include<string.h>
int n,m,i,j,js=1,ts;
int a[405][10],ans0;
char s,s1,ans1;
void fun(int id,int num)
{
    int t,bl=0;
    while(1)
    {
        t=a[id][num];
        if(t==1||t==2)//枚举上面 
        {
            if(id-m<1) break;
            else {id-=m;num=7-t;}
        }
        if(t==3||t==4)//右面 
        {
            if(id%m==0) break;
            else {id++;num=11-t;}
        }
        if(t==5||t==6)//下面 
        {
            if(id+m>m*n) break;
            else {id+=m;num=7-t;}
        }
        if(t==7||t==8)//左面 
        {
            if((id-1)%m==0) break;
            else {id--;num=11-t;}
        }
    }
    ans0=id;
    ans1=t+'A'-1;
}
int main()
{
    while(scanf("%d%d",&n,&m),n||m)
    {
        printf("Board %d:\n",js++);
        memset(a,0,sizeof(a));
        while(scanf("%d",&i))
        {
            if(!i) break;
            while(scanf("%c",&s))
            {
                if(s=='\n') break;
                if(s>='A'&&s<='z')
                {
                    scanf("%c",&s1);
                    a[i][0]++;
                    a[i][s-'A'+1]=s1-'A'+1; 
                    a[i][s1-'A'+1]=s-'A'+1;//两个方向分别做个映射 
                }
            }
        }
        scanf("\n");
        while(1)
        {
            scanf("%c",&s);
            if(s=='\n') break;
            if(s<='9'&&s>='0')
            {
                ts=s-'0';
                while(scanf("%c",&s1))
                {
                    if(s1>='A'&&s1<='Z') break;
                    ts=ts*10+s1-'0';
                }
                fun(ts,s1-'A'+1);
                printf("%d%c is connected to %d%c\n",ts,s1,ans0,ans1);
            }
        }
        printf("\n");
    }
    return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值