本文主要是介绍hdu2526(浪漫手机),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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;
}
这篇关于hdu2526(浪漫手机)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!