以下是我要解决的问题的链接:http://usaco.org/index.php?page=viewproblem2&cpid=187
以下是问题解决方案的链接:http://usaco.org/current/data/sol_cowfind.html
这是我写的解决方案:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string n; int answer = 0;
ifstream fin("cowfind.in");
fin >> n;
fin.close();
int c = 0;
//process for finding the number of possible outputs
for(int i = 0; i < n.size(); i++)
{
if(n[i-1] == '(' && n[i] == '(') //increment the variable c for each pair of "hind" legs
c++;
if(n[i-1] == ')' && n[i] == ')') //increment answer for each pair of front legs
answer++;
}
answer = answer * c; //number of pairs of hind legs * number of pairs of front legs
ofstream fout("cowfind.out");
fout << answer;
fout.close();
return 0;
}
话虽如此,我的代码出了什么问题?它不断产生不正确的输出,我不知道为什么。
答案 0 :(得分:2)
您的计算不正确。让我们看看这个输入:))((。这里没有解决方案,但你的代码将产生1个解决方案。
尝试迭代搜索第一个文字的字符串((。一旦找到 - 迭代要查找的其余字符串))并将它们添加到求解和中。
祝你好运!