在写CCF的201503-2 数字排序发现的
原始代码
struct X //定义一个新的类型
{
int data;
int num;
};
修改代码
struct X //定义一个新的类型
{
int data=0;
int num=0;
};
在codeblock前后输出结果都是一样的,但是CCF提交以后原始代码出错误,一定要声明吗,可是为什么呢
在写CCF的201503-2 数字排序发现的
原始代码
struct X //定义一个新的类型
{
int data;
int num;
};
修改代码
struct X //定义一个新的类型
{
int data=0;
int num=0;
};
在codeblock前后输出结果都是一样的,但是CCF提交以后原始代码出错误,一定要声明吗,可是为什么呢
#include <iostream>
using namespace std;
struct X //定义一个新的类型
{
int data=0;
int num=0;
};
int main()
{
int n;
cin>>n;
int i,j,m=0;
int a;
struct X x[1000];
cin>>x[0].data;
int flag=0;
for(i=1; i<n; i++)
{
flag=0;
cin>>a;
for(j=0; j<=i; j++)
{
if(x[j].data==a) //存在
{
x[j].num++;
flag=1;
break;
}//计数+1
}
if(flag==0)
x[++m].data=a;
}
int num=x[0].num;
int data=x[0].data;
for(i=0; i<=m; i++)
{
for(j=0; j<m-i; j++)
{
if(x[j].num>x[j+1].num)
{
data=x[j].data;
num=x[j].num;
x[j].data=x[j+1].data;
x[j].num=x[j+1].num;
x[j+1].data=data;
x[j+1].num=num;
}
}
}
for(i=0; i<=m; i++)
{
for(j=0; j<m-i; j++)
{
if(x[j].data<x[j+1].data&&x[j].num==x[j+1].num)
{
data=x[j].data;
num=x[j].num;
x[j].data=x[j+1].data;
x[j].num=x[j+1].num;
x[j+1].data=data;
x[j+1].num=num;
}
}
}
for(i=m; i>=0; i--)
{
cout<<x[i].data<<" "<<x[i].num+1<<endl;
}
return 0;
}