原题链接
思路:
甲对乙胜负情况表:
| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 0 | 平 | 输 | 赢 | 赢 | 输 |
| 1 | 赢 | 平 | 输 | 赢 | 输 |
| 2 | 输 | 赢 | 平 | 输 | 赢 |
| 3 | 输 | 输 | 赢 | 平 | 赢 |
| 4 | 赢 | 赢 | 输 | 输 | 平 |
在完成对题目要求的输入之后,我的思路是把A和B所有的出拳情况存到两个string中即str1、str2,然后遍历str1,对str2判断,计算得分。
int main() {
int n, l1, l2, g1 = 0, g2 = 0;
sfd(n);
sfd(l1);
sfd(l2);
getchar();
char ch;
string s1, s2, str1, str2;
for( int i=0; i<l1; i++ ) {
cin >> ch;
s1 += ch;
}
for( int i=0; i<l2; i++ ) {
cin >> ch;
s2 += ch;
}
// cout << s1 << " " << s2;
// pfn;
int cnt = 0;
for( int i=0, j=0; i<=n; i++, j++ ) {
str1 += s1[j];
if( j==l1-1 ) {
j = -1;
}
}
for( int i=0, j=0; i<=n; i++, j++ ) {
str2 += s2[j];
if( j==l2-1 ) {
j = -1;
}
}
// cout << str1 << " " << str2;
// pfn;
for( int i=0; i<n; i++ ) {
if( str1[i]=='0' ) {
if( str2[i]=='1'||str2[i]=='4' ) {
g2++;
}else if( str2[i]=='2'||str2[i]=='3' ) {
g1++;
}
}else if( str1[i]=='1' ) {
if( str2[i]=='2'||str2[i]=='4' ) {
g2++;
}else if( str2[i]=='0'||str2[i]=='3' ) {
g1++;
}
}else if( str1[i]=='2' ) {
if( str2[i]=='0'||str2[i]=='3' ) {
g2++;
}else if( str2[i]=='1'||str2[i]=='4' ) {
g1++;
}
}else if( str1[i]=='3' ) {
if( str2[i]=='0'||str2[i]=='1' ) {
g2++;
}else if( str2[i]=='2'||str2[i]=='4' ) {
g1++;
}
}else if( str1[i]=='4' ) {
if( str2[i]=='2'||str2[i]=='3' ) {
g2++;
}else if( str2[i]=='0'||str2[i]=='1' ) {
g1++;
}
}
}
pfd(g1);
pfk;
pfd(g2);
pfn;
return 0;
}
本文详细解析了一种用于计算游戏对战中两方胜负情况的算法。通过将双方的出拳情况存储为字符串,遍历并对比每个回合的出拳结果,以此来计算最终的得分。文章提供了一个具体的C++实现代码示例,展示了如何根据预设的胜负规则进行胜负判断。
174

被折叠的 条评论
为什么被折叠?



