Lucky Substrings 微软2016校园招聘在线笔试第二场
2015-05-10 18:11
447 查看
数据比较弱(100)
先算出fibonacci数列,然后建一棵树用来储存要输出的字符串。
先算出fibonacci数列,然后建一棵树用来储存要输出的字符串。
#include <iostream> #include <cstring> using namespace std; char ori[101],val[10000]; int down[10000],rig[10000],num=1; bool end_[10000]; char * substr(int i,int j) { char * m; int k; m=new char[j-i+2]; for(k=0;k<=j-i;k++) m[k]=ori[k+i]; m[j-i+1]='\0'; return m; } bool add(char* p) { bool flag=false; int s=0,i,len,a,b; len=strlen(p); for(i=0;i<len;i++) { if(down[s]==0) { down[s]=num; val[num]=p[i]; flag=true; s=num; num++; } else { s=down[s]; while(val[s]<p[i]&&rig[s]) s=rig[s]; if(val[s]==p[i]) continue; if(val[s]<p[i]) { rig[s]=num; val[num]=p[i]; flag=true; s=num; num++; } if(val[s]>p[i]) { rig[num]=rig[s]; rig[s]=num; val[num]=val[s]; val[s]=p[i]; down[num]=down[s]; down[s]=0; end_[num]=end_[s]; end_[s]=false; flag=true; num++; } } } end_[s]=true; return flag; } void show(int i,char* p,int lev) { int son; if(lev>=0) p[lev]=val[i]; if(down[i]==0) { p[lev+1]='\0'; puts(p); } else { if(end_[i]) { p[lev+1]='\0'; puts(p); } son=down[i]; while(son) { show(son,p,lev+1); son=rig[son]; } } } int main() { // freopen("aa.txt","r",stdin); memset(down,0,sizeof(down)); memset(rig,0,sizeof(rig)); memset(end_,false,sizeof(end_)); int len,i,j,coun,k,r; bool fa[105]; bool aa[30]; char* temp; char p[105]; memset(fa,false,sizeof(fa)); fa[1]=true; fa[2]=true; for(i=1,j=2;i+j<=100;k=j,j=i+j,i=k) fa[i+j]=true; scanf("%s",ori); len=strlen(ori); r=0; for(i=0;i<len;i++) { memset(aa,false,sizeof(aa)); coun=0; for(j=i;j<len;j++) { if(aa[ori[j]-'a']) { if(fa[coun]) { temp=substr(i,j); add(temp); } } else { aa[ori[j]-'a']=true; coun++; if(fa[coun]) { temp=substr(i,j); add(temp); } } } } show(0,p,-1); }
相关文章推荐
- 微软2016校园招聘在线笔试第二场 A Lucky Substrings
- 微软2016校园招聘在线笔试第二场 题目1 : Lucky Substrings
- Numeric Keypad 微软2016校园招聘在线笔试第二场
- 微软2016校园招聘在线笔试第二场——Lucky Substrings
- 微软2016校园招聘在线笔试第二场
- Spring Outing 微软2016校园招聘在线笔试第二场
- 微软2016校园招聘在线笔试第二场 题目1 : Lucky Substrings
- 题目3 : Spring Outing 微软2016校园招聘在线笔试第二场
- 微软2016校园招聘在线笔试 [Recruitment]
- hihoCoder 1135 Magic Box 微软2016校园招聘在线笔试
- 微软2016校园招聘4月在线笔试 总结
- hihocoder 1288:Font Size--微软2016校园招聘4月在线笔试
- [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)
- 微软2016校园招聘4月在线笔试-Font Size
- 微软2016校园招聘9月在线笔试-题目3 : Fibonacci
- hihoCoder 1136 Professor Q's Software 微软2016校园招聘在线笔试
- 微软2016校园招聘在线笔试 B Professor Q's Software [ 拓扑图dp ]
- 【hihocoder1290 微软2016校园招聘4月在线笔试C】【二维DP】 Demo Day 机器人遇到障碍向右走向下走 最少调整数使得左上角走到右下角
- 微软2016校园招聘4月在线笔试 A FontSize
- 【hihocoder1291 微软2016校园招聘4月在线笔试D】【逆序思维 并查集】Buiding in Sandbox 我的世界建方块合法性判定