augussmile 2015-11-03 09:46 采纳率: 7.7%
浏览 1506

新手问题,求高手解答

#include
#include
#include
typedef struct bitset *Set;
typedef struct bitset{
int setsize;
int arraysize;
int flag;
unsigned short *v;
}Bitset;
int ArrayIndex(int x)
{
return x>>4;
}

Set SetInit(int size)
{
int i;
Set S=(Bitset *)malloc(sizeof *S);
S->setsize=size;
S->arraysize=(size+15)>>4;
S->v=(unsigned short *)malloc(S->arraysize*sizeof(unsigned short));
for(i=0;iarraysize;i++) S->v[i]=0;
S->flag=0;
return S;
}
void insert(Bitset *s,int a[3])
{
for(int i=0;i if(a[i]>0&&a[i]>>4arraysize)
{
s->v[ArrayIndex(a[i])]|=~(1<<(a[i]&15));
}
}
int SetEqual(Set A,Set B)
{
int i,retval=1;
for(i=0;iarraysize;i++)
{
if(A->v[i]!=B->v[i]){retval=0;break;}
}
return retval;
}
int main()
{
// clock_t begin, duration;
// begin = clock();
int i;
int j;
int N,count;
Set *a;
count=0;
scanf("%d",&N);
a=(Set *)malloc(N*sizeof(Bitset));
// duration = clock() - begin;
// printf( "用时约: %d毫秒\n", duration*1000 / CLOCKS_PER_SEC );
for( i=0;i {
int j;
a[i]=SetInit(1000);
int b[3];
scanf("%d%d%d",&b[0],&b[1],&b[2]);
insert(a[i],b);
}
// duration = clock() - begin;
// printf( "创建完用时约: %d毫秒\n", duration*1000 / CLOCKS_PER_SEC );
for( i=0;i {
if(a[i]->flag==0)
{

    for( j=i+1;j<N;j++)
    {
        if(a[j]->flag==0)
        {
        if(SetEqual(a[i],a[j]))
        {
          a[j]->flag=1;
        }
        }
    }
    }
}

// duration = clock() - begin;
// printf( "比较完用时约: %d毫秒\n", duration*1000 / CLOCKS_PER_SEC );
for( i=0;i {
if(a[i]->flag==0)
{
count++;
}
}
printf("%d\n",count);
// duration = clock() - begin;
// printf( "计数完用时约: %d毫秒\n", duration*1000 / CLOCKS_PER_SEC );

free(a);

return 0;

}
我这个代码超时,题目要求1000MS以内,跪求高手这个怎么改进,感激不尽。。。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog