现在的位置: 首页 > 综合 > 正文

hdu2526(浪漫手机)

2018年02月22日 ⁄ 综合 ⁄ 共 2026字 ⁄ 字号 评论关闭

#include<stdio.h>
#include<string.h>
typedef struct
{
    char ch[3],c;//ch是音符模式,c是音符
}node;
char f[1000][1000];
int main()
{
    node str[8];
    int t,n,j,i,e;
    scanf("%d",&t);//输入
    while(t--)
    {
        scanf("%d",&n);
        for(i=0;i<8;i++)
        {
            getchar();
            scanf("%s %c",str[i].ch,&str[i].c);
        }
        getchar();
        scanf("%s",f[0]);

        int len;
        len=strlen(f[0]);//每行乐谱长度

        for(i=0;i<n-1;i++)
        {
            for(j=0;j<len;j++)//从第二行起一开始都初始化为0
            f[i+1][j]='0';
            f[i+1][len]='\0';//每行的结束符,为了方便输出

            for(e=0;e<8;e++)//注意这里是每行最开头一个音符谱写
                    if(str[e].c!='0')//音符不为0,因为都己经初始化为0了
                    {
                        if('0'==str[e].ch[0])//找到与音符模式相同的串
                        if(f[i][0]==str[e].ch[1])
                        if(f[i][1]==str[e].ch[2])
                        {
                            f[i+1][0]=str[e].c;
                            break;
                        }
                    }

                for(j=0;j<len;j++)
                {
                    for(e=0;e<8;e++)
                    if(str[e].c!='0')
                    {
                         if(j<len-2)//这里是每行间与开头和给尾的音符谱写
                        {
                            if(f[i][j]==str[e].ch[0])
                            if(f[i][j+1]==str[e].ch[1])
                            if(f[i][j+2]==str[e].ch[2])
                            {
                                f[i+1][j+1]=str[e].c;
                                break;
                            }
                        }
                        else if(j==len-2)//注意这里是每行最后一个音符谱写
                        {
                             if(f[i][j]==str[e].ch[0])
                            if(f[i][j+1]==str[e].ch[1])
                            if('0'==str[e].ch[2])
                            {
                                f[i+1][j+1]=str[e].c;
                                break;
                            }
                        }
                    }
                }
        }

        for(i=0;i<n;i++)//输出
        printf("%s\n",f[i]);

    }
    return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.