CodeChef每日培训错误答案
CodeChef Daily Train Wrong Answer
所以,在CodeChef的最后一场比赛(二月Cook Off)中,我在大约15分钟内就找到了我认为可以解决这个问题的算法,但无法得到正确的答案。我试了很久,我检查了很多东西,我不明白我的错误在哪里。我的通用算法与问题的社论相匹配,但我想我在找不到的地方有一个错误。
问题链接-http://www.codechef.com/problems/daily
它在C++中。代码如下。基本上,我只是在读票的数量,汽车的数量,在汽车中迭代。读取字符串,递减一组隔室,对隔室进行组合(选择),添加到输出中,完成。
在所有的测试用例和我提出的一些测试用例上都能很好地工作。其中有一些不需要的东西只是我的CodeChef模板的一部分。
感谢您的帮助。
#include <iostream>
#include <time.h>
#include <string>
#include <math.h>
using namespace std;
const double PI=2*acos(0.0);
#define sqr(x) ((x)*(x))
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
int factorial(int input){
int output = 1;
while(input>1){
output*=input--;
}
return output;
}
int choose(int n, int k){
int output = 0;
output = factorial(n)/(factorial(k)*factorial(n-k));
return output;
}
int main(){
#ifndef ONLINE_JUDGE
clock_t tStart = clock();
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
//freopen("time.txt","w",stderr);
#endif
int tickets;
cin >> tickets;
int cars;
cin >> cars;
string input;
int output = 0;
int compartments[9];
while(cars-->0){
for(int i = 0;i<9;i++){
compartments[i] = 6;
}
cin >> input;
for(int i = 0;i<=35;i++){
compartments[i/4] -= (input.at(i)-48);
}
for(int i = 36;i<=53;i++){
compartments[8-((i-36)/2)] -=(input.at(i)-48);
}
for(int i = 0;i<9;i++){
output+=choose(compartments[i],tickets);
}
}
cout << output;
#ifndef ONLINE_JUDGE
fprintf(stderr,"Completed in %.0f msecn",(double)(clock()-tStart));
#endif
return 0;
}
因此正确的代码如下。
在while循环中,当我输出+=时,我会做一个小的更改。
if(compartments[i]>=tickets){
output+=choose(compartments[i],tickets);
}
问题是我的select函数没有正确处理(至少)一个案例。如果compartment[i]=0,tickets=1,答案应该是0,因为从1个东西中选择0个东西的方法是0。但是,0和1的阶乘都是1,-1(0-1)的阶乘(在我的函数中)也是1,所以我的选择返回1/(1*1)。哎呀。不知道为什么我花了这么长时间才找到这个。我从来没有测试过那个病例。很抱歉浪费了时间,我还在学习。
相关文章:
- 使用 bfs 解决连接组件问题时得到错误的答案
- 递归求和任务的错误答案
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 乘法宏给出错误的答案
- 谷歌启动B轮巴士路线问题错误的答案?
- 欧拉项目 #8 C++ 得到错误的答案
- 寻找最小楼梯成本的动态规划问题的错误答案
- 为什么可变大小的数组会导致Codechef出现错误答案
- 位集上的按位或给出错误的答案
- 在 c++ 中将模板与类一起使用时,类成员函数的答案错误?
- SPOJ PLD的答案错误
- UVA 3n+1(概率 100)答案错误,但所有测试用例均已通过
- 散列!!答案错误,想不通
- 指数的最后一位——答案错误
- 在计算cpp中数字的n次方根时,答案错误
- Euler项目27的答案错误