字符串编码
描述:还原压缩后的字符串
示例:输入10a1b1c
输出aaaaaaaaaabc
思路:比较简单,不过多讲述了
代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int n=0;
string ss="";
for (auto a : s)
{
if (a < 58)
{
n = n*10+a-48;
}
else
{
for (int i = 0; i < n; ++i)
{
ss = ss + a;
}
n = 0;
}
}
cout << ss;
return 0;
}
飞机大战游戏
描述:按下a键,飞机会发射出2枚子弹,每个子弹会对命中的敌人造成1点固定伤害。
按下b键,飞机会发射出1枚子弹,子弹会对命中的敌人造成巨额伤害并瞬间将其秒杀。
游戏—共有 T 个关卡,消灭当前关卡全部敌人后,发射出去多余的子弹会消失,游戏会自动进入下一个关卡。
假设每个关卡都会在屏幕中同时出现N个敌人,这N个敌人所能承受的伤害也已经知道,每个关卡最少按几次发射按键就可以将敌人全部消灭。
示例:输入
3 3
1 2 1
2 3 2
1 2 3
输出
2
3
3
思路:贪心,如果敌人生命>1直接用b键,剩下敌人(即生命为1)用a键。
代码:
#include <iostream>
#include <vector>
using namespace std;
int fun(vector<int> vec,int n)
{
vector<int> v = vec;
int c = 0;
int cc = 0;
for (int i=0;i<n;++i)
{
if (v[i] > 1)
{
c++;
}
else
{
cc++;
}
}
c = c + cc / 2 + cc % 2;
return c;
}
int main()
{
int t, n;
vector<int> num;
cin >> t >> n;
int vv;
for (int j = 0; j < t; ++j)
{
vector<int> v;
for (int i = 0; i < n; ++i)
{
cin >> vv;
v.push_back(vv);
}
num.push_back(fun(v,n));
}
for (int i = 0; i < t; ++i)
{
cout << num[i] << endl;
}
return 0;
}
*居然败在了忘记用push_back添加元素手里