目录
牛客_点击消除(栈)
解析代码
牛客_点击消除(栈)
点击消除_牛客题霸_牛客网
描述:
牛牛拿到了一个字符串。
他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。
但相同而不相邻、不相同的相邻字母都是不可以被消除的。
牛牛想把字符串变得尽可能短。他想知道,当他点击了足够多次之后,字符串的最终形态是什么?
解析代码
用栈来模拟消除的过程即可。
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int a = 0;
while(cin >> a)
{
cout << a << " = ";
vector<int> arr;
for(int i = 2; i <= sqrt(a); ++i)
{
while(a % i == 0)
{
// cout << i << " * ";
arr.push_back(i);
a /= i;
}
}
if(a != 1) // 说明是素数
{
// cout << a << " * ";
arr.push_back(a);
}
int sz = arr.size();
for(int i = 0; i < sz; ++i)
{
cout << arr[i];
if(i != sz - 1)
cout << " * ";
}
cout << endl;
}
return 0;
}