acm pku 1029 题为何提交不成功??代码解释如下!

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:29:14
#include<iostream>
using namespace std;

int leftnum[101][501] , rightnum[101][501] ;/*二位数组定义每次两边放的个数*/
int leave[101];/*数组定义左右两边每次放的金币的个数*/
char result[101];//定义每次的结果(是否平衡)
int total , times;//定义金币总数和要测的次数

bool islight(int num)//判断是否比其他轻,如果比其他的轻返回真
{
int i = 0;
for( i = 0 ; i < times ; i++)
{
int j = 0;
for( j = 0 ; j < leave[i] ; j++)
{
switch(result[i])
{
case '>':
{
if(num == leftnum[i][j]) return false;
break;
}
case '=':
{
if( (num == leftnum[i][j]) || (num == rightnum[i][j]) ) return false;
break;
}
case '<':
{
if(num == rightnum[i][j]) return false;
break;
}
}
}
}
return true;
}
bool isheavy(int num)//判断是否比其他重如果重返回真
{
int i = 0;<

自己用几个测试用例测一下嘛
5 2
2 1 2 3 4
<
2 2 3 1 4
>

再给组数据
3 2
1 1 2
<
1 1 3
<

答案是1
还有,程序可能有很多组输入呢

我也给出我AC了的代码吧

#include <stdio.h>
#include <vector>
#include <memory>

using namespace std;
bool getout[1001];
bool left[1001];
bool right[1001];
bool all[1001];
int main()
{
int N,K,Pi;
char op;
vector<int> vi;
while(scanf("%d%d",&N,&K)==2)
{

memset(getout,0,N+1);
memset(left,0,N+1);
memset(right,0,N+1);
for(int i=0;i<K;i++)
{
memset(all,1,N+1);
scanf("%d",&Pi);
vi.clear();
int num;
for(int j=0;j<2*Pi;j++){
scanf("%d",&num);
all[num]=false;
vi.push_back(num);
}
scanf(" %c",&op);
if(op=='='){