一、最高分是多少ios
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int n,m; while(scanf("%d %d",&n,&m)!=EOF){ int *score = (int*)malloc(sizeof(int)*(n+1)); int res[5000]; int cnt = 0; for(int i=1; i<=n; i++)//這裏寫成for(int i=0; i<n; i++)能夠提交成功,可是那是錯誤的,估計是華爲OJ測試平臺有問題,測試平臺的下標多是從0開始的,坑爹 scanf("%d",&score[i]); char t; int a=0,b=0; while(m--){ scanf("%c",&t); if(t == '\n') scanf("%c",&t); scanf("%d %d",&a,&b); if(t == 'Q'){ int max = 0; for(int i=a;i<=b;i++){ if(score[i] > max) max = score[i]; } res[cnt++] = max; }else score[a] = b; } for(int i=0; i<cnt; i++) printf("%d\n",res[i]); free(score); } return 0; }
二、簡單錯誤記錄算法
#include <iostream> #include <string> #include <vector> using namespace std; struct Log{ string path; int row; int count; };
static int log_cnt = 0; void doLog(Log &lg){ int len = lg.path.size(),cnt = 0; for(int i=len-1; i>=0 && cnt<16; i--){ if(lg.path[i] == '\\') break; else{ cnt ++; } } lg.path = lg.path.substr(len-cnt,cnt); } void writeLog(vector<Log> &vec,Log &lg){ doLog(lg); for(int i=0;i<vec.size();i++){ if(vec[i].path == lg.path && vec[i].row == lg.row){ vec[i].count ++; return ; } }
lg.count = 1;
vec[log_cnt%8] = lg;
log_cnt ++;測試
} int main(){ vector<Log> vec; Log lg; while(cin>>lg.path>>lg.row){ writeLog(vec,lg); } for(int i=0; i<vec.size(); i++) cout<<vec[i].path<<" "<<vec[i].row<<" "<<vec[i].count<<endl; return 0; }
三、撲克牌大小spa
#include <iostream> #include <string> #include <vector> using namespace std; //個子 對子 順子 三個 四個 對王 static int judgeType(vector<char> &vec,int *value){ if(vec.size()==2){ if(vec[0]=='r' || vec[0]=='R') return 6; else{ *value=vec[0]; return 2; } } *value=vec[0]; return vec.size(); } static void print(vector<char> &vec){ if(vec[0] == 'r') cout<<"joker"; else if(vec[0] == 'R') cout<<"JOKER"; else if(vec[0] == 'T') cout<<"10"; else cout<<vec[0]; for(int i=1; i<vec.size(); i++){ if(vec[i] == 'r') cout<<" joker"; else if(vec[i] == 'R') cout<<" JOKER"; else if(vec[i] == 'T') cout<<" 10"; else cout<<" "<<vec[i]; } cout<<endl; } bool comp(char a,char b){ switch(a){ case 'T': a = 'a';break; case 'J': a = 'b';break; case 'Q': a = 'c';break; case 'K': a = 'd';break; case 'A': a = 'e';break; case 'r': a = 'f';break; case 'R': a = 'g';break; } switch(b){ case 'T': b = 'a';break; case 'J': b = 'b';break; case 'Q': b = 'c';break; case 'K': b = 'd';break; case 'A': b = 'e';break; case 'r': b = 'f';break; case 'R': b = 'g';break; } return a>b; } int main(){ string str; while(getline(cin,str)){ int len = str.size(); vector<char> vec1,vec2; bool flag = false; for(int i=0; i<len; i++){ if(str[i] == '-'){ flag = 1; continue; } else if(isspace(str[i])) continue; if(flag){ if(str[i]=='j') {vec1.push_back('r');i=i+4;} else if(str[i]=='J' && i==len-1){vec1.push_back('J');} else if(str[i]=='J' && str[i+1]=='O'){vec1.push_back('R');i=i+4;} else if(str[i]=='1') {vec1.push_back('T');i=i+1;} else vec1.push_back(str[i]); }else{ if(str[i]=='j') {vec2.push_back('r');i=i+4;} else if(str[i]=='J' && i==len-1){vec2.push_back('J');} else if(str[i]=='J' && str[i+1]=='O'){vec2.push_back('R');i=i+4;} else if(str[i]=='1') {vec2.push_back('T');i=i+1;} else vec2.push_back(str[i]); } } int value1 = 0,value2 = 0; int type1 = judgeType(vec1,&value1); int type2 = judgeType(vec2,&value2); if(type1 == type2){ if(comp(value1,value2)) print(vec1); else print(vec2); }else{ if((type1==4 || type1==6) && type2<6) print(vec1); else if((type2==4 || type2==6) && type1<6) print(vec2); else cout<<"ERROR"<<endl; } } return 0; }
華爲上機題,對算法自己要求並不高,關鍵是要注意細節。華爲OJ平臺感受作的很很差,直接顯示錯誤或正確,一點錯誤提示都沒有。最坑的就是每題只有5次提交機會,搞的你們都不敢輕易提交了。code
版權全部,歡迎轉載,轉載請註明出處。blog