VC运行测试结果正确,POJ出现runtime error,谁知道原因?
POJ生日相同Description在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。Input第一行...
POJ生日相同
Description
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。
Input
第一行为整数n,表示有n个学生,n<100。
此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度小于10)和出生月(1<=m<=12)日(1<=d<=31)。
学号、月、日之间用一个空格分隔。
Output
对每组生日相同的学生,输出一行,
其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。
对所有的输出,要求按日期从前到后的顺序输出。
对生日相同的学号,按输入的顺序输出。
#include<iostream>
using namespace std;
struct node
{
char id[10];
int month;
int day;
node *next;
};
int main()
{
node* p[12];
for(int i=0;i<12;i++)
p[i]=NULL;
int n;
cin>>n;
while(n>0)
{
node *temp=new node;
cin>>temp->id;
cin>>temp->month;
cin>>temp->day;
temp->next=NULL;
if(p[temp->month]==NULL) p[temp->month]=temp;
else{
node *before=NULL; node *after=p[temp->month];
while(after!=NULL&&after->day<=temp->day)
{
before=after;
after=after->next;
}
if(before!=NULL)
{
temp->next=after;
before->next=temp;
}else{
temp->next=after;
p[temp->month]=temp;
}
}
n--;
}
for(int i=0;i<12;i++)
{
if(p[i]==NULL) continue;
else
{
bool equal=false;
node *before=p[i];
node *after=before->next;
while(after!=NULL)
{
while(after!=NULL&&after->day==before->day)
{
equal=true;
after=after->next;
}
if(true)
{
cout<<i<<' '<<before->day<<' ';
while(before!=after)
{
cout<<before->id<<' ';
before=before->next;
}
cout<<endl;
equal=false;
if(after!=NULL)
after=after->next;
else break;
}
else{
before=after;
after=after->next;
}
}
}
}
return 0;
}
不是这个问题,将这个数组改大仍然出现这个问题,不清楚指针操作是否出现错误,我还没找出来 展开
Description
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。
Input
第一行为整数n,表示有n个学生,n<100。
此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度小于10)和出生月(1<=m<=12)日(1<=d<=31)。
学号、月、日之间用一个空格分隔。
Output
对每组生日相同的学生,输出一行,
其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。
对所有的输出,要求按日期从前到后的顺序输出。
对生日相同的学号,按输入的顺序输出。
#include<iostream>
using namespace std;
struct node
{
char id[10];
int month;
int day;
node *next;
};
int main()
{
node* p[12];
for(int i=0;i<12;i++)
p[i]=NULL;
int n;
cin>>n;
while(n>0)
{
node *temp=new node;
cin>>temp->id;
cin>>temp->month;
cin>>temp->day;
temp->next=NULL;
if(p[temp->month]==NULL) p[temp->month]=temp;
else{
node *before=NULL; node *after=p[temp->month];
while(after!=NULL&&after->day<=temp->day)
{
before=after;
after=after->next;
}
if(before!=NULL)
{
temp->next=after;
before->next=temp;
}else{
temp->next=after;
p[temp->month]=temp;
}
}
n--;
}
for(int i=0;i<12;i++)
{
if(p[i]==NULL) continue;
else
{
bool equal=false;
node *before=p[i];
node *after=before->next;
while(after!=NULL)
{
while(after!=NULL&&after->day==before->day)
{
equal=true;
after=after->next;
}
if(true)
{
cout<<i<<' '<<before->day<<' ';
while(before!=after)
{
cout<<before->id<<' ';
before=before->next;
}
cout<<endl;
equal=false;
if(after!=NULL)
after=after->next;
else break;
}
else{
before=after;
after=after->next;
}
}
}
}
return 0;
}
不是这个问题,将这个数组改大仍然出现这个问题,不清楚指针操作是否出现错误,我还没找出来 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询