2015年4月3日星期五

[UVa] 297 - Quadtrees

陣列要開大一點,不然很容易WA

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int img[35][35]; //(0~31 * 0~31)
char input[2000];
int flag;
int sol(int a, int b, int w){
    char c = input[flag];
    flag++;
    if(c=='p'){
        sol(a+w/2,b,w/2);
        sol(a,b,w/2);
        sol(a,b+w/2,w/2);
        sol(a+w/2,b+w/2,w/2);
    }
    if(c=='f'){
        for(int i=a; i<a+w; i++){
          for(int j=b; j<b+w; j++){
                img[i][j]=1;
            }
        }
    }
}
int main(){
    freopen("input.txt","r",stdin);
    int n;
    scanf("%d",&n);
    getchar();
    while(n--){
      int count=0;
        memset(img,0,sizeof(img));

    //getchar();
        memset(input,0,sizeof(input));
        fgets(input,sizeof(input),stdin);
        flag=0;
        sol(0,0,32);

        memset(input,0,sizeof(input));
        fgets(input,sizeof(input),stdin);
        flag=0;
        sol(0,0,32);
   
        for(int i=0;i<32;i++){
            for(int j=0;j<32;j++){
                if(img[i][j]==1)count++;
            }
        }
       
        printf("There are %d black pixels.\n",count);
    }
    return 0;
}

沒有留言: