题目地址: http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3106
(提交后系统提示Compile Error (我的结构体数组定义太大的原因))
怎么办?帮忙解决下,谢谢。
以下是我的代码:
#include<iostream>
#include<map>
struct bobo//定义啦名为bobo的结构体
{
int a[1000000];
}num[10000];
int b[10000];
using namespace std;
int main()
{
int n,x,i,j,m,t;
map<int,int>p2;//定义了一个map映像(是行数与每行输入个数的对应),下面要用到
while(cin>>n)
{
int bo=0;
for(i=0;i<n;i++)
{cin>>m;
int s=0;
for(j=0;j<m;j++)
{
cin>>num[i].a[j];//对数据输入并保存到结构体中
s+=num[i].a[j];//对于每行的数据求和
}
b[i]=s;//把每行数据保存到数组b中以便进行下一步的排序
p2[i]=m;//将行与输入个数对应
}
int c[10000];//定义c数组是为了得到b数组排序后数组中的数在原来未排序时的位置状况
for(i=0;i<n;i++)//将数组c从0赋值到n-1;其实就是b数组的下标
c[i]=i;
for(j=n-1;j>=0;j--)//冒泡法将b数组进行递减排序
for(i=0;i<j;i++)
if(b[i]<b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
t=c[i];//当b中数交换时,下标也交换
c[i]=c[i+1];
c[i+1]=t;
}
for(i=0;i<n;i++)//排序后按对应关系输出,即从最大的开始输出
if(b[i]!=0)
{
cout<<c[i]+1<<":";
for(j=0;j<p2[c[i]];j++)
cout<<" "<<num[c[i]].a[j];
cout<<endl;
}
cout<<endl;
}
}