EXE made in 2017.9.15.
来源:互联网 发布:舞祭组 知乎 编辑:程序博客网 时间:2024/05/21 17:42
Gene Examiner
第一次做小程序。。坚强性还不是很够。。有问题求大神指教orz
下面是代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<ctime>#include<algorithm>#include<windows.h>using namespace std;int n1,n2,m,g;int vis[1000005];char s[505],c[505];unsigned long long a[505][505],b[505][505];unsigned long long t[505],d[505];int hash(unsigned long long a){return a*37%1000007;}int get(char x){ if(x=='A')return 1; if(x=='C')return 2; if(x=='G')return 3; if(x=='T')return 4; else return 0;}int p;bool check(int x){ for(int i=x;i<=m;i++) { memset(vis,0,sizeof(vis)); int sign=0; for(int j=1;j<=n1;j++) vis[hash(a[j][i]-a[j][i-x]*t[x])]=1; for(int j=1;j<=n2;j++) { if(vis[hash(b[j][i]-b[j][i-x]*t[x])]) {sign=1;break;} } if(sign)continue; p = i-x+1; return true; } return false;}void find(int x){ int i=p; memset(vis,0,sizeof(vis)); int sign=0; for(int j=1;j<=n1;j++) vis[hash(a[j][i]-a[j][i-x]*t[x])]=1; //for(int j=1;j<=n2;j++) { if(vis[hash(d[i]-d[i-x]*t[x])]==0) {sign=1;} } if(sign)cout << "This GENE doesn't have the marked ones." << endl << endl; else cout << "Wow this is it!" << endl << endl;}int printable(int x,int h){ int i=x+h; { memset(vis,0,sizeof(vis)); int sign=0; for(int j=1;j<=n1;j++) vis[hash(a[j][i]-a[j][i-h]*t[h])]=1; for(int j=1;j<=n2;j++) { if(vis[hash(b[j][i]-b[j][i-h]*t[h])]) {sign=1;break;} } if(sign)return 0; return x+1; }}void mv(){ for(int i=1;i<=100;i++) { system("cls"); cout << endl << endl << endl << endl << " --- GENE EXAMINER BY ISSAC ---" << endl; if(i%3==1)cout << endl << endl << endl << " Loading now. " << i << "% /" << endl; if(i%3==2)cout << endl << endl << endl << " Loading now.. " << i << "% -" << endl; if(i%3==0)cout << endl << endl << endl << " Loading now... " << i << "% |" << endl; cout << endl << endl << endl << endl << endl << endl; cout << endl << endl << endl << endl << endl << endl; cout << endl << " made by 20170111 ^ " << endl; Sleep(10); } Sleep(1000); }int main(){ //freopen("hh.in","r",stdin); mv(); system("cls"); char gg[1000]; Sleep(500); cout << "Welcome using GENE EXAMINER Version 1.0 , here are the tips while you are using." << endl; Sleep(1000); cout << "Do you know the steps? Enter '1' if not , or enter '0'." << endl; Sleep(1000); cout << "Now enter here :"; cin >> gg; while(gg[0]!='0'&&gg[0]!='1'||strlen(gg)>1){ memset(gg,3,sizeof(gg)); cout << endl << "Oh! I'm sorry but you can only enter '0' or '1' !" << endl; Sleep(1000); cout << "Now enter here again:"; cin >> gg; }g = gg[0]-'0'; if(g){ cout << endl << "This is an early vision so it could only examine one marked gene at a time. :(" << endl; Sleep(1000); cout << "First, enter the length of all the gene you will enter later." << endl; Sleep(1000); cout << "Such as for gene < AGCT > , enter '4'." << endl; Sleep(1000); cout << "By the way, this program can only hold up to 500 alphabets... and don't enter number which is lower than 1..." << endl; Sleep(1000); cout << "But for most warning: DON'T ENTER ALPHABETS !!!" << endl; Sleep(1000); cout << "Now enter here:"; }cin >> m; while(m>500||m<=0){ cout << endl << "Oh! I'm sorry but you can only enter a number between 1 and 500!" << endl; Sleep(1000); cout << "Now enter here again:"; cin >> m; } t[0]=1; for(int i=1;i<=m;i++) t[i]=t[i-1]*37; if(g){ cout << endl << "Second, enter the number of the gene which has got the 'marked gene'." << endl; Sleep(1000); cout << "Such as for gene < AGCT > and < AGCA > , they both have marked gene < AGC > , enter '2'." << endl; Sleep(1000); cout << "Also for most warning: DON'T ENTER ALPHABETS !!!" << endl; Sleep(1000); cout << "Now enter here:"; }cin >> n1; while(n1>500||n1<=0){ cout << endl << "Oh! I'm sorry but you can only enter a number between 1 and 500!" << endl; Sleep(1000); cout << "Now enter here again:"; cin >> n1; } if(g){ cout << endl << "Third, enter the gene which has got the 'marked gene'." << endl;Sleep(1000); cout << "Such as for gene < AGCT > and < AGCA > , enter 'AGCT' , then press ENTER , then enter 'AGCA'." << endl; Sleep(1000); cout << "Now enter here:" << endl; }for(int i=1;i<=n1;i++) { int ggg=1; while(ggg){ ggg=0; scanf("%s",s+1); for(int j=1;j<=m;j++) if(get(s[j])) a[i][j]=(a[i][j-1]*37+get(s[j])); else{ ggg=1; cout << "Oh! I'm sorry but you can only enter 'A','T','C'or'G'!" << endl; cout << "Now enter here again:" << endl; break; } } } if(g){ cout << endl << "Fourth, enter the number of the gene which hasn't got the 'marked gene'." << endl; Sleep(1000); cout << "Such as for gene < AGCT > and < AGCA > , they both have marked gene < AGC >." << endl; Sleep(1000); cout << "But for gene < ATCT > and < ATCA > , they both don't have marked gene < AGC >." << endl; Sleep(1000); cout << "So enter '2'." << endl; Sleep(1000); cout << "Also for most warning: DON'T ENTER ALPHABETS !!!" << endl; Sleep(1000); cout << "Now enter here:"; }cin >> n2; while(n1>500||n1<=0){ cout << endl << "Oh! I'm sorry but you can only enter a number between 1 and 500!" << endl; Sleep(1000); cout << "Now enter here again:"; cin >> n2; } if(g){ cout << endl << "Fifth, enter the gene which hasn't got the 'marked gene'." << endl;Sleep(1000); cout << "Such as for gene < AGCT > and < AGCA > , they both have marked gene < AGC >." << endl; Sleep(1000); cout << "But for gene < ATCT > and < ATCA > , they both don't have marked gene < AGC >." << endl;Sleep(1000); cout << "So enter 'ATCT' , then press ENTER , then enter 'ATCA'." << endl; Sleep(1000); cout << "Now enter here:" << endl; }for(int i=1;i<=n2;i++){ int ggg=1; while(ggg){ ggg=0; scanf("%s",c+1); for(int j=1;j<=m;j++) if(get(c[j])) b[i][j]=(b[i][j-1]*37+get(c[j])); else{ ggg=1; cout << "Oh! I'm sorry but you can only enter 'A','T','C'or'G'!" << endl; cout << "Now enter here again:"; break; } } } int l=0,r=m; while(l<r) { int mid=(l+r)>>1; if(check(mid))r=mid; else l=mid+1; } for(int i=0;i<=m-l;i++) { int j = printable(i,l); if(j){ int cnt=1; while(cnt!=j){cout<<" ";cnt++;}cnt=1; while(cnt<=l){cout<<"^";cnt++;} cout << " " << l << endl; } } Sleep(1000); cout << endl << "Now the program has marked the 'Marked Gene' out." << endl; cout << "Now Enter the GENE you want to examine or simply enter 'Q' to quit:" << endl; Sleep(1000); if(g){ cout << "Such as you wanna examine gene < AGCA > , just simply enter 'AGCA'." << endl << endl; Sleep(1000); } while(1) { int ggg=1; while(ggg){ ggg=0; scanf("%s",c+1); if(c[0]=='Q') { cout << endl << "Thank you for using this program! ;D" << endl; Sleep(1000); cout << endl << "I'll do it better next time... maybe... orz" << endl; Sleep(1000); return 0; } for(int j=1;j<=m;j++) if(get(c[j])) d[j]=(d[j-1]*37+get(c[j])); else{ ggg=1; cout << "Oh! I'm sorry but you can only enter 'A','T','C'or'G'!" << endl; break; } } find(l); if(g)cout << "Enter the GENE you want to examine or simply enter 'Q':" << endl; Sleep(1000); memset(d,0,sizeof(d)); }}
阅读全文
0 0
- EXE made in 2017.9.15.
- made in?
- Made in China
- made in china
- made
- QR Codes Made Easy In Android
- LdapTemplate: LDAP Programming in Java Made Simple
- 5 Mistakes Made In Performance Reviews
- How it's made species-in-pieces
- Fix a Man-made Mistake in Java Project of Eclipse
- 俞敏洪:读Made in America(《山姆•沃尔顿传记》)
- 俞敏洪:读Made in&nbs…
- HOW I MADE $2,000,000 IN THE STOCK MARKET
- Why String has been made immutable in Java?
- 中国制造网(made-in-china)的排名技巧
- HOYI Entities 开源ORM框架 [made in china]
- (杂项-励志!!)made in 和made by 中国三个重要科技领域受制于日本等国
- call external .exe in python
- 什么是数组
- python super()入门
- 怎么把数据集的输出值转换成只含有0,1的标签向量
- ImageLoad自定义设置
- 1058. A+B in Hogwarts (20)
- EXE made in 2017.9.15.
- 有赞直接打开优惠券中心提示404的解决办法
- SSM框架中的术语
- 正规方程推导过程
- LINTCODE---排序列表转换为二分查找树
- hdu 6194 string string string 后缀数组+rmq+容斥
- SkipList跳跃表
- ARM汇编指令
- H5~表单