1 条题解

  • 0
    @ 2025-4-12 21:56:16

    C :

    #include "stdio.h"
    int a[13];
    int b[13]={0},c[26]={0},d[26]={0};
    int n,flag=0,s=0;
    void F(int t)
    {
    	int i;
    	if(t==n)
    	{
    		flag++;
    		s++;
    		if(flag<=3)
    		{
    			for(i=0;i<n-1;i++)
    				printf("%d ",a[i]+1);
    			printf("%d\n",a[n-1]+1);
    		}
    	}
    	else
    	{
    		for(a[t]=0;a[t]<n;a[t]++)
    		{
    			if(b[a[t]]==0&&c[n-a[t]+t]==0&&d[a[t]+t]==0)
    			{
    				b[a[t]]=1;
    				c[n-a[t]+t]=1;
    				d[a[t]+t]=1;
    				F(t+1);
    				b[a[t]]=0;
    				c[n-a[t]+t]=0;
    				d[a[t]+t]=0;
    			}
    		}
    
    	}
    		
    }
    int main()
    {
    	scanf("%d",&n);
    	for(a[0]=0;a[0]<n;a[0]++)
    	{
    		b[a[0]]=1;
    		c[n-a[0]]=1;
    		d[a[0]]=1;
    	    F(1);
    		b[a[0]]=0;
    		c[n-a[0]]=0;
    		d[a[0]]=0;
    
    	}
    	printf("%d\n",s);
    	return 0;
    }
    

    C++ :

    #include <iostream>
    #include <cmath>
    #include <cstring>
    using namespace std;
    int n,k=1,x=0;
    int s[15],a[15],b[30],c[30];
    bool check(int h)  
    {
     if (a[s[h]]==1 || b[h-s[h]+n]==1 || c[h+s[h]]==1) return 0; else return 1;
    }
    int clear()
    {
        for (int i=1;i<=15;i++) a[i]=0;
        for (int i=1;i<=30;i++) b[i]=0;
        for (int i=1;i<=30;i++) c[i]=0;
    }
    int main()
    {
        cin>>n;
        s[k]=1;
        while (k>0)
        {
              while (!check(k) && s[k]<=n) s[k]++; 
              
              if (s[k]<=n){a[s[k]]=1; b[k-s[k]+n]=1; c[k+s[k]]=1; k++; s[k]=1;}
              else{k--; a[s[k]]=0; b[k-s[k]+n]=0; c[k+s[k]]=0; s[k]++;}
              
              if (k==n+1) 
              {x+=1;
              if (x<=3) 
              {
               for (int i=1;i<=n-1;i++) cout<<s[i]<<" ";
               cout<<s[n]; cout<<endl;
              }
              
              k--;a[s[k]]=0; b[k-s[k]+n]=0; c[k+s[k]]=0; s[k]++; }
        }
        cout<<x<<endl;
    //    system ("pause");
        return 0;
    }
    
    
    • 1

    信息

    ID
    2395
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者