I People Counting

来源:互联网 发布:淘宝上外贸是正品吗 编辑:程序博客网 时间:2024/06/05 09:48

当时没想到,现在感觉思路打开就好了

思路:每次遇到一个部分就把身体其他部分一起变为一个不可能的符号并cnt++. 根据这个把相片从头到尾全部扫一遍就好。

#include<iostream>#include<cstring>using namespace std;int H,W,cnt;char photo[105][105];const char m[3][4]={{"-O-"},{"/|\\"},{"(-)"}}; //记录完整人的样子;void change(int i,int j);void print();void count(int i,int j){if(photo[i][j]=='.') return ;else if(photo[i][j]=='O') change(i,j-1),cnt++;else if(photo[i][j]=='/') change(i-1,j),cnt++;else if(photo[i][j]=='|') change(i-1,j-1),cnt++;else if(photo[i][j]=='\\') change(i-1,j-2),cnt++;else if(photo[i][j]=='(') change(i-2,j),cnt++;else if(photo[i][j]==')') change(i-2,j-2),cnt++;//print();}void change(int i,int j){for(int a=0;a<3;a++)for(int b=0;b<3;b++)if(i+a>=0&&i+a<H&&j+b>=0&&j+b<W&&m[a][b]==photo[i+a][j+b]) //一样就变为'.'photo[i+a][j+b]='.';}int main(){int k;cin>>k;while(k--){cin>>H>>W;memset(photo,0,sizeof(photo));for(int i=0;i<H;i++)for(int j=0;j<W;j++)cin>>photo[i][j];cnt=0;for(int i=0;i<H;i++)  //从头到尾遍历一遍;for(int j=0;j<W;j++)count(i,j);cout<<cnt;if(k) cout<<endl;}return 0;} void print(){for(int i=0;i<H;i++){for(int j=0;j<W;j++)cout<<photo[i][j];cout<<endl;}cout<<endl;}


0 0
原创粉丝点击