2015年9月29日 星期二

UVA10252 Common Permutation

題目來源:http://rubyacm.blogspot.tw/2010/08/10252-common-permutation.html
公式:

觀念:
主要是利用ASCII碼的編碼,我們輸入的小寫英文字接著存在陣列(意旨in[1001]、in_2[1001]),然後利用迴圈將出現過的字母ASCII碼陣列(意旨程式的a[128、b[128]])+1,最後輸出的時候,就利用比大小的方式將較少的次數輸出。

程式碼:
//YuanSyun on 2015.9.29
#include <iostream>
using namespace std;

int main()
{
while (1)
{
char in[1001] = { 0 }, in_2[1001] = { 0 }; //= {0}初始化陣列
int a[128] = { 0 }, b[128] = { 0 };
char x = NULL;
int number = 0, i = 0, j = 0;


cin >> in; //第一行輸入
cin >> in_2; //第二行輸入

i = 0;
while(1) //將第一行輸入的字元儲存在b陣列
{
x = in[i];
if (x == '\0')break;
number = x - NULL;
a[number]++;
i++;
}

i = 0;
while(1) //將第二行輸入的字元儲存在b陣列
{
x = in_2[i];
if (x == '\0')break;
number = x - NULL;
b[number]++;
i++;
}

for (i = 97; i < 124; i++)
{
if ((a[i] != 0) && (b[i] != 0))
{
if (a[i] >= b[i])
{
for (j = b[i] - 1; j >= 0; j--)
cout << char(i);
}
else
{
for (j = a[i] - 1; j >= 0; j--)
cout << char(i);
}
}
}
cout << endl;
}

system("pause");
return 0;
}

沒有留言:

張貼留言

歡迎指教或發問