题目描述
情报科科长小喵截取了一段汪星人侵略者的情报密电,是一段仅由 D,O,G,X
组成的字符序列。为了保卫喵星的和平,免受汪星人的侵略,小喵要破解这段密电。
经过仔细的研究,小喵发现密电中每出现一个 DOG
子序列,就代表汪星人将排遣一支侵略军来袭。请你帮助小喵破解密电,确定汪星人将排遣多少支侵略军!
输入格式
一行一串字符序列,仅由 D,O,G,X
组成;
D,O,G,X
这四个字母中某一个或多个不一定出现。
输出格式
一行一个整数,输出汪星人将排遣多少支侵略军(DOG
子序列的数量);
其中 DOG
必须为正序,OGD
、GOD
、DGO
、ODG
等都不合法。
样例
输入数据 1
DOGGODXG
输出数据 1
4
提示
样例解析
子序列的组成如下图:
数据范围
对于 100%的数据:字符串长度 ≤ 2000 \le 2000 ≤2000 。
暴力
s
s
s为输入的字符串,
定义
c
o
u
n
t
count
count等于
0
0
0
定义
l
e
n
len
len是
s
s
s的长度
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
cin >> s;
int cnt = 0;
int len = s.length();
return 0;
}
暴力出奇迹!
接下来套3个for
如果
s
[
i
]
s[i]
s[i]是D,那么for,如果
s
[
j
]
s[j]
s[j]是O,那么for,如果
s
[
k
]
s[k]
s[k]是G,
c
n
t
cnt
cnt就加1
for(int i = 0; i < len;i++){
if(s[i] == 'D'){
for(int j = i+1; j < len; j++){
if(s[j] == 'O'){
for(int k = j+1; k < len; k++){
if(s[k] == 'G'){
cnt++;
}
}
}
}
}
}
最后输出 c n t cnt cnt
cout << cnt;
return 0;//好习惯
code:
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
cin >> s;
int cnt = 0;
int len = s.length();
for(int i = 0; i < len;i++){
if(s[i] == 'D'){
for(int j = i+1; j < len; j++){
if(s[j] == 'O'){
for(int k = j+1; k < len; k++){
if(s[k] == 'G'){
cnt++;
}
}
}
}
}
}
cout << cnt;
return 0;
}