四分樹(以後遇到四分樹要用陣列來存)
阿新 • • 發佈:2018-12-10
四分樹是將一張圖分成四份,圖代表一個節點,分成四份的一張圖代表四個子節點,用二維陣列代表一張圖,然後進行操作,這道題是求兩張圖的重合成一張來算結果,所以就是將兩張圖的操作放到一個二維陣列中。
#include <set> #include <queue> #include<algorithm> #include <iostream> #include<string.h> #include<map> #include<stack> #include<string> #include <stdio.h> #include<sstream> using namespace std; #define max 1034 int len=32; int canvas[max][max] ; int cnt; void draw(int a,int b,int c,int d){ char x; cin>>x; if(x=='p'){ draw(a,(a+b)/2,c,(c+d)/2); draw(a,(a+b)/2,(c+d)/2,d); draw((a+b)/2,b,c,(c+d)/2); draw((a+b)/2,b,(c+d)/2,d); } else if(x=='f'){ for(int i=a;i<b;i++) for(int j=c;j<d;j++){ if(canvas[i][j]==0){ canvas[i][j]=1; cnt++; } } } } int main() { int num; cin>>num; while(num--){ cnt=0; memset(canvas,0,sizeof(canvas)); draw(0,len,0,len); // cout<<"outdraw"<<endl; draw(0,len,0,len); cout<<"There are "<<cnt<<" black pixels."<<endl; } return 0; }