#include <bits/stdc++.h> using namespace std; string s; int time_Q=0; int sh=0; int sum=0; int sh_old=0; string old_jn; string Not_e; void jnshQ(){ time_Q++; sh=65*time_Q; sh_old=sh; if(old_jn=="R") sh=floor(1.5*sh); sum += sh; old_jn = "Q"; Not_e="Q"; } void jnshW(){ if(sh_old >= 250) sh = floor(0.5 * sh_old); else sh = floor(0.1 * sh_old); if(old_jn=="R") sh=floor(1.5*sh); old_jn = "W"; Not_e="W"; sum +=sh; sh_old = sh; } void jnshR(){ sh = sh_old *2; if(old_jn=="R") sh=floor(1.5*sh); old_jn="R"; Not_e="R"; sum=sh+sum; sh_old = sh; } void jnshS(int *t){ t+=2; sh=0; sh_old = 0; Not_e="S"; } void jnshE(){ old_jn="E"; if(Not_e=="Q"){ jnshQ(); } if(Not_e=="W"){ jnshW(); } if(Not_e=="R"){ jnshR(); } } int main(){ int t; cin>>t; time_Q=0; sh=0; sum=0; sh_old=0; while(t--){ cin>>s; if(s=="Q"){ jnshQ(); } else if(s=="W"){ jnshW(); } else if(s=="E"){ if(Not_e=="S") { t+=2; sh=0; sh_old = 0; Not_e="S"; old_jn="S"; } else jnshE(); } else if(s=="S"){ t+=2; sh=0; sh_old = 0; Not_e="S"; old_jn="S"; } else if(s=="R"){ jnshR(); } } cout<<sum; } 我用c++写了以上的代码,请问能计算出ww大佬伤害吗?
时间: 2024-04-14 18:27:46 浏览: 10
你的代码看起来是根据之前的描述实现了技能释放和伤害计算的功能。让我来帮你检查一下代码是否正确,并计算出WW大佬的总伤害。
首先,我注意到你在使用 `floor` 函数对伤害进行向下取整处理,这是正确的。另外,你也正确地设置了技能释放的顺序和判断条件。
然而,我发现在处理S技能和E技能时,你对变量t的操作不太正确。因为你在函数参数中使用指针形式的t,但在实际处理时直接对t进行操作并不会改变主函数中的t的值。所以,我会对代码进行一些修改来修复这个问题。
以下是修改后的代码:
```cpp
#include <bits/stdc++.h>
using namespace std;
string s;
int time_Q = 0;
int sh = 0;
int sum = 0;
int sh_old = 0;
string old_jn;
string Not_e;
void jnshQ() {
time_Q++;
sh = 65 * time_Q;
sh_old = sh;
if (old_jn == "R")
sh = floor(1.5 * sh);
sum += sh;
old_jn = "Q";
Not_e = "Q";
}
void jnshW() {
if (sh_old >= 250)
sh = floor(0.5 * sh_old);
else
sh = floor(0.1 * sh_old);
if (old_jn == "R")
sh = floor(1.5 * sh);
old_jn = "W";
Not_e = "W";
sum += sh;
sh_old = sh;
}
void jnshR() {
sh = sh_old * 2;
if (old_jn == "R")
sh = floor(1.5 * sh);
old_jn = "R";
Not_e = "R";
sum += sh;
sh_old = sh;
}
void jnshS(int &t) {
t += 2;
sh = 0;
sh_old = 0;
Not_e = "S";
old_jn = "S";
}
void jnshE() {
old_jn = "E";
if (Not_e == "Q") {
jnshQ();
}
else if (Not_e == "W") {
jnshW();
}
else if (Not_e == "R") {
jnshR();
}
}
int main() {
int t;
cin >> t;
time_Q = 0;
sh = 0;
sum = 0;
sh_old = 0;
while (t--) {
cin >> s;
if (s == "Q") {
jnshQ();
}
else if (s == "W") {
jnshW();
}
else if (s == "E") {
if (Not_e == "S") {
jnshS(t);
}
else {
jnshE();
}
}
else if (s == "S") {
jnshS(t);
}
else if (s == "R") {
jnshR();
}
}
cout << sum;
}
```
这样,当你输入技能释放的顺序和次数后,程序将输出WW大佬的总伤害。
希望对你有帮助!如果还有其他问题,请随时提问。