HDOJ 2526 HDU 2526 浪漫手機 ACM 2526 IN HDU
Posted on 2010-09-26 16:42 MiYu 閱讀(563) 評論(0) 編輯 收藏 引用 所屬分類: ACM ( 模擬 ) 、ACM ( 水題 )MiYu原創(chuàng), 轉帖請注明 : 轉載自 ______________白白の屋
題目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2526
題目描述:
浪漫手機
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 362 Accepted Submission(s): 150
之后WisKey查閱了一些樂譜發(fā)現(xiàn),其實很多鈴聲是以某種規(guī)律變化的,這里為了簡化這個難題,他以連續(xù)3個音符來判斷下個音符。
如有模式
在給定第一行樂譜的情況下,按模式將產(chǎn)生如下樂譜圖形:
我們用0表示白色格子,用1表示黑色格子。
對于沒有連續(xù)3個格子的邊緣(即沒有左邊格子或右邊格子),我們直接用白色格子代替缺少的那一個格子。
每組數(shù)據(jù)有一個整數(shù)M,表示要輸出M行樂譜。接著有8行模式串,左邊是音符模式,右邊是下一個音符。最后一行是第一行樂譜。
1 16 111 1 110 1 101 1 100 1 011 1 010 0 001 1 000 0 0000000000000001000000000000000
0000000000000001000000000000000 0000000000000010100000000000000 0000000000000101010000000000000 0000000000001010101000000000000 0000000000010101010100000000000 0000000000101010101010000000000 0000000001010101010101000000000 0000000010101010101010100000000 0000000101010101010101010000000 0000001010101010101010101000000 0000010101010101010101010100000 0000101010101010101010101010000 0001010101010101010101010101000 0010101010101010101010101010100 0101010101010101010101010101010 1010101010101010101010101010101
題目分析 :
純水 模擬題.......... 就是 由 上面 3 個 格子的 顏色 推出下面 中間那塊的 顏色. 推出來直接輸出就可以了 .
題目開始已經(jīng)給出了第一行的 顏色 , 下面的可以直接 暴力推出來 用hash很快就能判斷.
代碼如下 :
/*
Coded By : MiYu
Link : http://www.cnblogs.com/MiYu || http://www.shnenglu.com/MiYu
Author By : MiYu
Test : 1
Program : 2526
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char c[2][50];
int T,t,M;
int main(){
char a[3],b[9];
for(int i=0;i<2;i++) c[i][0]='0';
scanf("%d",&T);
while(T--){
scanf("%d",&M);
for(int i=1;i<=8;i++){
scanf("%s",a);
int num=(a[0]-'0')*4+(a[1]-'0')*2+a[2]-'0';
scanf("%d",&t);
b[num] = '0' + t;
}
scanf("%s",&c[0][1]);
int len=strlen(&c[0][1]);
for(int i=0;i<2;i++) c[i][len+1]='0';
for(int j=0;j<M;j++){
for(int i=0;i<len;i++){
int num=(c[j%2][i]-'0')*4+(c[j%2][i+1]-'0')*2+c[j%2][i+2]-'0';
c[(j+1)%2][i+1]=b[num];
printf("%c",c[j%2][i+1]);
}
printf("\n");
}
}
return 0;
}


