首页 > 代码库 > 复习基础算法的感想
复习基础算法的感想
晚上做杭电OJ,第二题是一个比较直观的题,我也是太直观了。贴出代码,供自己反省,从7点15分一直做到结束,wa9次。。。。orz。。。。看来自己的算法功底还差的很远很远。
接下的几天,学习大白上的基础
算法部分。
#include<iostream>#include<stdio.h>#include<cstring>using namespace std;char a[20],b[20];char c[20];void shuchu(int num){ if(num==0) return ; shuchu(num/2); printf("%d",num%2);}void translate(int num){ if(num<16) printf("0"); if(num<8) printf("0"); if(num<4) printf("0"); if(num<2) printf("0"); /* while(num) { printf("%d",num%2); num=num/2; }*/ shuchu(num);}void fun1(){ if(!strcmp(a,"ADD")) printf("000001"); if(!strcmp(a,"SUB")) printf("000010"); if(!strcmp(a,"DIV")) printf("000011"); if(!strcmp(a,"MUL")) printf("000100"); if(!strcmp(a,"MOVE")) printf("000101"); if(!strcmp(a,"SET")) printf("000110");}void fun2(){ int num1=0; int i=0; while(b[i]!=‘,‘&&b[i]!=‘\0‘) { i++; } //cout<<i<<endl; if(i==3) { num1+=b[i-1]-‘0‘; num1+=(b[i-2]-‘0‘)*10; translate(num1); } else if(i==2) { num1+=b[i-1]-‘0‘; translate(num1); } if(!strcmp(a,"SET")) return; int num2=0; int j=0; i+=2; while(b[i]!=‘\0‘) { j++; i++; } if(j==1) { num2+=b[i-1]-‘0‘; translate(num2); } else if(j==2) { num2+=b[i-1]-‘0‘; num2+=(b[i-2]-‘0‘)*10; translate(num2); }}void fun3(){ char d[20]; for(int i=0;i<6;i++) { d[i]=c[i]; } d[6]=‘\0‘; if(strlen(c)==16||strlen(c)==11) { } else { printf("Error!"); return; } if(strlen(c)==11) { if(strcmp(d,"000110")) { printf("Error!"); return; } } if(strlen(c)==16) { if(!strcmp(d,"000110")) { printf("Error!"); return; } } if(!strcmp(d,"000001")) printf("ADD R"); else if(!strcmp(d,"000010")) printf("SUB R"); else if(!strcmp(d,"000011")) printf("DIV R"); else if(!strcmp(d,"000100")) printf("MUL R"); else if(!strcmp(d,"000101")) printf("MOVE R"); else if(!strcmp(d,"000110")) printf("SET R"); else { printf("Error!"); return; } int num1=0; int k=16; for(int i=6;i<11;i++) { num1+=(c[i]-‘0‘)*k; k/=2; } printf("%d",num1); if(!strcmp(d,"000110")) return; printf(",R"); int num2=0; k=16; for(int i=11;i<16;i++) { num2+=(c[i]-‘0‘)*k; k/=2; } printf("%d",num2);}int main(){ int n; while(cin>>n) { if(n==1) { cin>>a>>b; fun1(); fun2(); cout<<endl; } if(n==0) { cin>>c; fun3(); cout<<endl; } } return 0;}
复习基础算法的感想
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。