#include<iostream> #include<algorithm> #include<Cstring> using namespace std; int f[2500]; int ans; void built_tree(string s){ int p=0,root=0; f[root]=1; while(p<s.size()){ if(s[p]=='0'){ root=root*2+1; f[root]=1; } else{ root=root*2+2; f[root]=1; } p++; } } void dfs(int x){ int flag=0; if(f[x*2+1]==1){ dfs(x*2+1); flag=1; } if(f[x*2+2]==1){ dfs(x*2+2); flag=1; } if(flag==0) ans++; } int main(){ string s; int d=0,index=1; memset(f,0,sizeof(f)); while(cin>>s){ if(s!="9"){ d++; built_tree(s); } else{ ans=0; dfs(0); if(ans==d) printf("Set %d is immediately decodable\n",index++); else printf("Set %d is not immediately decodable\n",index++); d=0; memset(f,0,sizeof(f)); } } } |
Double click to view unformatted code.