cpe練習筆記 UVa10252 Common Permutation
題目連結
題目大意
找出共同出現的字母,然後依照字母排序輸出
解題提概念
1. 建立兩個陣列來儲存第一與第二次的字母出現次數(對應字母ascii 97-122)
2. 使用%2來判斷目前在第一次輸入還是第二次輸入
3. 印出陣列97-122
4. 選擇出現次數不為0但是數值較小的那一個來當作該字母的印出次數
5. 清空陣列、計數器+1,結束回合
程式碼
題目大意
找出共同出現的字母,然後依照字母排序輸出
解題提概念
1. 建立兩個陣列來儲存第一與第二次的字母出現次數(對應字母ascii 97-122)
2. 使用%2來判斷目前在第一次輸入還是第二次輸入
3. 印出陣列97-122
4. 選擇出現次數不為0但是數值較小的那一個來當作該字母的印出次數
5. 清空陣列、計數器+1,結束回合
程式碼
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int i,j; char input[1024]; memset(input,0,sizeof(input)); int ascii[123]={0}; int ascii2[123]={0}; int counter = 0; int loopSta=0; while(fgets(input,1024,stdin)!=NULL){ // loopSta=counter%2; for(i=0;i<1024;i++){ if(input[i]>=97 && input[i]<=122){ if(loopSta==0) ascii[input[i]]++; else ascii2[input[i]]++; } } // int times=0; if(loopSta==1){ for(i=97;i<=122;i++){ if(ascii[i]!=0 && ascii2[i]!=0){ (ascii[i]>=ascii2[i])?(times=ascii2[i]):(times=ascii[i]); for(j=0;j<times;j++){ printf("%c",i); } } } printf("\n"); memset(ascii,0,sizeof(ascii)); memset(ascii2,0,sizeof(ascii2)); } // memset(input,0,sizeof(input)); counter++; } return 0; }
留言
張貼留言