2015 年 9月份華為機試題 (2)幸運號
阿新 • • 發佈:2019-02-20
// HUAWEI_2.cpp : 定義控制檯應用程式的入口點。
//
//找幸運號,petr是否存在,是否是幸運號,詳細描述見華為機試題(2)幸運號描述 #include"stdafx.h" #include<iostream> #include<assert.h> using namespace std; int Compare_Char(char ch1,char ch2) { if(ch1==ch2)return 0; if(ch1>='a' && ch1<='z') { if(ch2>='A' && ch2<='Z')return 1; else{ if(ch1>ch2)return 1; else return -1; } }else{ if(ch2>='a' && ch2<='z')return -1; else{ if(ch1>ch2)return 1; else return -1; } } return 0; } int Compare_Str(char*str1,char*str2) { assert(str1!=NULL && str2!=NULL); int len1=strlen(str1); int len2=strlen(str2); int i=0,j=0; int value=0; while( i<len1 && j<len2) { value=Compare_Char(str1[i],str2[j]); if(value==1)return 1; else if(value==-1)return -1; else{ i++; j++; } } if(i==len1 && j==len2)return 0; else if(i<len1)return 1; else if(j<len2)return -1; return 0; } int IsExit(char str[10][50],char peter[50]) { int result=-1; int i=0; for(i=0;i<10;i++) { if(Compare_Str(str[i],peter)==0) { result=i; break; } } return result; } int Output(char str[10][50],char peter[50]) { assert(str!=NULL && peter!=NULL); int exit=IsExit(str,peter); if(exit==-1)return 0; int i=0,j=0,k=0; int array[10]={0}; int count=1; for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(array[j]!=0)continue; else break; } int temp=0; if(j<10)temp=j; else break; for(k=0;k<10;k++) { if(array[k]!=0 || k==j)continue; else if(Compare_Str(str[k],str[temp])==-1) { temp=k; } } array[temp]=count; count++; } for(i=0;i<10;i++)cout<<array[i]<<" "; cout<<endl; return array[exit]; } void main() { char str[10][50]={{"a"},{"A"},{"b"},{"B"},{"petr"},{"D"},{"DO"},{"Ao"},{"ao"},{"bo"}}; char peter[50]="petr"; /* char str[10][50]; for(int i=0;i<10;i++) cin>>str[i]; */ cout<<Output(str,peter)<<endl; }