欢迎使用CSDN-markdown编辑器

来源:互联网 发布:域名证书提供商 编辑:程序博客网 时间:2024/06/12 20:12

行列转换(指针实现)
感觉这道题是一个稀疏矩阵,如果开二维矩阵,就要爆10000*10000;
所以我感觉1.用邻接表2.用指针去掉不用的空格,将其压缩成动态数组。
这有一个知识:将指针弄成动态数组,这个玩意很强悍,可以说让空间不在纠结。
那么就用一个指针定义一个动态数组吧,这指针的精髓:动态开空间。

include

define LP 10001

using namespace std;
int x[LP],y[LP],d[LP];
int c[LP];
int *a[LP];
int main()
{
int n,m,k;
scanf(“%d%d%d”,&n,&m,&k);
for(int i=1;i<=k;i++)
{
scanf(“%d%d%d”,x+i,y+i,d+i);
c[y[i]]++;
}
for(int i=1;i<=m;i++)
a[i]=new int[c[i]];
for(int i=1;i<=k;i++)
{
*a[y[i]]=d[i];
a[y[i]]++;
}
for(int i=1;i<=m;i++)
{
a[i]-=c[i];
for(int j=1;j<=c[i];j++)
printf(“%d”,*a[i]);
}
return 0;
}

代码如下,有点难理解只不过看得懂

原创粉丝点击