Poj-1013 Counterfeit Dollar (Runtime Error)
* main.cpp
*
* Created on: 2013-6-2
* Author: Jeff
*/
/*题目地址:http://poj.org/problem?id=1013*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
int A_sub_0 = 'A' - 0;
int num_of_case=0; //输入数据的组数
string *inputData = NULL; //输入的数据
inputData = new string[3];
int coin[12];
/*coin数组用以表示十二个硬币的真假状态,0表示硬币为真,1与-1都表示为假,且1为重了,-1轻了*/
for(int i= 0; i < 12; i++)
coin[i] = 2;
cin>>num_of_case;
string* result = NULL;
result = new string[num_of_case];
for(int i = 0, n = 0; i < 3*num_of_case; i++){
for(int j = 0; j <3; j++){
cin>>inputData[j];
}
if(inputData[2] == "even"){
for(int k = 0; k < (int)inputData[0].length(); k++){
int left = inputData[0][k] - A_sub_0;
int right = inputData[1][k] - A_sub_0;
coin[left] = 0;
coin[right] = 0;
}
}
else if (inputData[2] == "up"){
for(int k = 0; k < (int)inputData[0].length(); k++){
int left = inputData[0][k] - A_sub_0;
int right = inputData[1][k] - A_sub_0;
if(coin[left] == 2)
coin[left] = 1;
if(coin[right] == 2)
coin[right] = -1;
}
}
else{
for(int k = 0; k < (int)inputData[0].length(); k++){
int left = inputData[0][k] - A_sub_0;
int right = inputData[1][k] - A_sub_0;
if(coin[left] == 2)
coin[left] = -1;
if(coin[right] == 2)
coin[right] = 1;
}
}
/*判断一组数据输完了没,并且查找哪一个硬币是赝品,并将结果存入result数组中*/
if((i+1)%3 == 0){
for(int i = 0; i < 12; i++){
if(coin[i] == -1 || coin[i] == 1){
result[n] = (char)(i+A_sub_0);
result[n]+=" is the counterfeit coin and it is ";
if(coin[i] == -1)
result[n]+="light.";
else
result[n]+="heavy.";
n++;
}
}
for(int i= 0; i < 12; i++)
coin[i] = 2;
}
for(int j = 0; j < 3;j++){
inputData[j].clear();
}
}
for(int i = 0; i < num_of_case; i++){
cout<<result[i]<<endl;
}
return 0;
}
这个代码测试没问题,但提交后的反馈是Runtime Error.
然后我自己检查下,没发现问题,没办法,先发上来.明天再看看.

浙公网安备 33010602011771号