最后一个点TLE

P1219 [USACO1.5] 八皇后 Checker Challenge

lijunda @ 2024-03-07 20:26:26

#include<bits/stdc++.h>
using namespace std;
int visx[100];
int visy[100];
int n;
int ans=0,flag=0;

void dfs(int tot)
{
    if(tot==n)
    {
        ans++;
        if(flag<3)
        {
            flag++;
            for(int i=1;i<=n;i++)
            {
                cout<<visy[i]<<" ";
            }
            cout<<endl;
        }
        return;
    }
    int i=tot+1;
    for(int j=1;j<=n;j++)
    {
        int f=0;
        for(int k=1;k<=tot;k++)
        {
            if(i==visx[k]||j==visy[k]||abs(i-visx[k])==abs(j-visy[k]))
            {
                f=1;
                break;
            }
        }
        if(f==0)
        {
            visx[tot+1]=i;
            visy[tot+1]=j;
            tot++; 
            dfs(tot);
            tot--;
            visx[tot+1]=0;
            visy[tot+1]=0;  
        } 
    }
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            visx[1]=i,visy[1]=j;
            dfs(1);
            visx[1]=0,visy[1]=0;
        }
    }
    cout<<ans;
} 

by ye_hao_lun @ 2024-03-07 20:43:54

不行反正数据少,打表吧,我样例全过,也是有错,都打表过的


by jhlcxoi114514 @ 2024-03-07 20:52:11

最后一个点几秒?

如果相差不多在主函数最开始的地方加个ios

具体代码如下```cpp

ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

by jhlcxoi114514 @ 2024-03-07 20:55:17

最后一个点几秒?

如果相差不多在主函数最开始的地方加个ios

具体代码如下


ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

by miffy_123 @ 2024-03-18 21:08:17

@lijunda

void dfs(int tot)
//改成
void dfs(int &tot)

by miffy_123 @ 2024-03-18 21:12:46

另外:

卡常小方法: for(int i=0;i<n;i++)->for(register int i=0;i<n;++i)

写个快读:


int read(){
    int f=1,k=0;
    char c;
    c=getchar();
    while(c<'0'||c>'9'){
        if(c=='-'){
            f=-1;
        }
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        k=(k<<1)+(k<<3)+(c^48);
        c=getchar();
    }
    return f*k;
}
void write(int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9){
        write(x/10);
    }
    putchar(x%10+'0');
}

还不行?循环展开!火车头!


|