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;
}
留言
張貼留言