1 #include<stdio.h> 2 int BinarySearch(int a[],int n,int key); 3 int arr[2000050]; 4 5 int main(void) 6 { 7 int n,m,i; 8 int num; 9 10 scanf("%d%d",&n,&m); 11 for(i=0;i<n;i++) 12 { 13 scanf("%d",&arr[i]); 14 } 15 for(i=1;i<=m;i++) 16 { 17 scanf("%d",&num); 18 printf("%d",BinarySearch(arr,n,num)); 19 if(i==m) printf("\n"); 20 else printf(" "); 21 } 22 return 0; 23 } 24 int BinarySearch(int a[],int n,int key) 25 { 26 int left=0,right=n-1; 27 int middle,i=0; 28 while(left<=right) 29 { 30 middle=(left+right)/2; 31 if(a[middle]>key) 32 right=middle-1; 33 if(a[middle]<key) 34 left=middle+1; 35 if(a[middle]==key) 36 return middle; 37 } 38 return -1; 39 }
PS:對於二分法查找問題,主要是尋找key值所在的區域,逐步縮小查找的範圍,以提升查找效率。對於一些比較大的有序數組的時候,若是使用數組遍歷的方式,那麼效率肯定很低下了。如何縮小範圍,即利用left與right的從新賦值來達到目的。這種題目最好先本身演算一遍,找到查找的規律,從特殊到通常。數組
1 #include<stdio.h> 2 int main(void) 3 { 4 char ch[105]; 5 int i=0; 6 int count=0; 7 int flag=1; 8 9 scanf("%s",ch); 10 while(ch[i]!='\0') 11 { 12 if(ch[i]=='(') count++; 13 if(ch[i]==')'&&count==0) 14 { 15 printf("parentheses do not match!\n"); 16 return 0; 17 } 18 if(ch[i]==')'&&count!=0) count--; 19 i++; 20 } 21 if(count==0) 22 printf("parentheses match!\n"); 23 else 24 printf("parentheses do not match!\n"); 25 26 return 0; 27 }
PS: 對於括號匹配問題,注意創建模型。何時是匹配成功,何時是匹配失敗。顯然最終左右括號數一定相等,且在字符串中,當左右括號數相等的時候,一定是先出現左括號。因此依據此能夠創建兩個條件。spa
1 #include<stdio.h> 2 int main(void) 3 { 4 char ch[105]; 5 int arr[52]; 6 char ch1[52]={[0]='A',[26]='a'}; 7 int i=0,j=0; 8 9 scanf("%s",ch); 10 for(j=0;j<52;j++) 11 arr[j]=0; 12 for(j=1;j<52;j++) 13 { if(j<=25) 14 ch1[j]=ch1[j-1]+1; 15 if(j>=27) 16 ch1[j]=ch1[j-1]+1; 17 } 18 while(ch[i]!='\0') 19 { 20 if(ch[i]<='Z'&&ch[i]>='A') 21 arr[ch[i]-'A']++; 22 if(ch[i]<='z'&&ch[i]>='a') 23 arr[ch[i]-'A'-6]++; 24 i++; 25 } 26 for(j=0;j<52;j++) 27 { 28 if(arr[j]!=0) 29 printf("The character %c has presented %d times.\n",ch1[j],arr[j]); 30 } 31 32 return 0; 33 }
PS:在個人思路中,我忽略了大寫字母與小寫字母的ASCLL碼(美國信息交換標準代碼)之間還有一些表示符號。
code
'Z'的ASCLL碼爲90,而'a'的ASCLL碼爲97,其中還有6個ASCLL碼錶示一些特殊符號。
blog
這一特色使個人代碼在一開始時WA(wrong anwser)了,好坑~~~字符串