求助看看代码为啥超时
查看原帖
求助看看代码为啥超时
735122
zhouyf828楼主2024/4/6 18:23

我算法也每很复杂啊,为啥会超时啊,求大佬帮忙看看

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int py=0;
    for(int i=1;i<n;)
    {
        py++;
        i*=2;
    }
    int f[py+5][n+5];
    memset(f,0,sizeof f);
    for(int i=1;i<=n;i++)
    {
        int j=i;
        for(int k=1;k<=py;k++)
        {
            f[k][i]=j%2;
            j/=2;
        }
    }
    cout<<py<<" ";//朋友人数
    for(int i=1;i<=py;i++)
    {
        int sum=0;
        for(int j=1;j<=n;j++)
        {
            if(f[i][j]==1) sum++;
        }
        cout<<sum<<" ";
        for(int j=1;j<=n;j++)
        {
            if(f[i][j]==1) cout<<j<<" ";
        }
    }
    cout<<endl;//输出结束
    string dzt;
    cin>>dzt;
    int fm[n+5];
    for(int i=1;i<n+3;i++) fm[i]=1;
    for(int i=1;i<=py;i++)
    {
        if(dzt[i-1]=='1')
        {
            for(int j=1;j<=n;j++)
            {
                if(f[i][j]==0) fm[j]=0;
            }
        }
        else if(dzt[i-1]=='0')
        {
            for(int j=1;j<=n;j++)
            {
                if(f[i][j]==1) fm[j]=0;
            }
        }
    }//判断哪些有毒
    for(int i=1;i<=n;i++) {
        if(fm[i]==1) {
            cout<<i<<endl;
            return 0;
        }
    }
}   

谢谢

2024/4/6 18:23
加载中...