5 条题解

  • 2
    @ 2025-7-19 9:23:15
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int N=20+10;
    int n,ans;
    char a[N][N];
    bool v[N];
    void dfs(int step){
    	if(step==n+1){
    		ans++;
    		return;
    	}
    	for(int i=1;i<=n;i++){
    		if(a[step][i]=='1'&&!v[i]){
    			v[i]=1;
    			dfs(step+1);
    			v[i]=0;
    		}
    	}
    }
    signed main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>a[i][j];
    		}
    	}
    	dfs(1);
    	cout<<ans;
        return 0;
    }
    
    
    • 1
      @ 2025-7-19 9:24:51

      #include #include <math.h> #include <string.h> #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include <complex.h> #include <fenv.h> #include <inttypes.h> #include <stdbool.h> #include <stdint.h> #include <tgmath.h> const int N=20+10; using namespace std; int n,ans; char a[N][N]; bool v[N]; void dfs(int s) { if(sn+1) { ans++; return ; } for(int i=1;i<=n;i++) { if(a[s][i]'1'&&!v[i]) { v[i]=1; dfs(s+1); v[i]=0; } } } signed main() { cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; dfs(1); cout<<ans; return 0; }

      • -1
        @ 2024-11-24 16:35:03
        #include<iostream> 
        using namespace std; 
        const int N = 20 + 10; 
        const int INF = 0x3f3f3f; 
        int ans,n; 
        char a[N][N]; 
        bool v[N]; 
        void dfs(int step)
        { 
            if(step == n + 1)
        	{ 
        	    ans++; 
        		return; 
        	} 
        	for(int i = 1;i <= n;i++)
        	{ 
        	    if(a[step][i] == '1' && !v[i])
        		{ 
        		    v[i] = 1; 
        			dfs(step + 1); 
        			v[i] = 0; 
        		} 
        	} 
        } 
        int main(){ 
            cin >> n; 
        	for(int i = 1;i<=n;i++){ 
        	    for(int j = 1;j<=n;j++){ 
        		    cin >> a[i][j]; 
        		} 
        	} 
        	dfs(1); 
        	cout << ans;
        	return 0; 
        	}
        
        
        • -1
          @ 2024-7-28 9:20:58

          #include using namespace std; const int N = 20 +10; const int INF=0x3f3f3f; int ans,n; char a[N][N]; bool v[N]; void dfs(int step){ if(step == n + 1){ ans++; return; } for(int i = 1;i<=n;i++){ if(a[step][i] == '1' && !v[i]){ v[i] = 1; dfs(step+1); v[i] = 0; } } } int main(){ cin>>n; for(int i = 1;i<=n;i++){ for(int j = 1;j<=n;j++){ cin>>a[i][j]; } } dfs(1); cout<<ans; }

          • -4
            @ 2025-7-19 9:21:27

            #include<bits/stdc++.h> using namespace std;

            const int MAXN = 25; int n, ans; char arr[MAXN][MAXN]; bool v[MAXN];

            void dfs(int step) { if (step == n + 1) { ans++; return; } for (int i = 1; i <= n; i++) { if (arr[step][i] == '1' && !v[i]) { v[i] = 1; dfs(step + 1); v[i] = 0; } } }

            int main() { cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> arr[i][j]; } }

            dfs(1);
            cout << ans << endl;
            return 0;
            

            }

            • 1

            信息

            ID
            3062
            时间
            1000ms
            内存
            256MiB
            难度
            6
            标签
            递交数
            108
            已通过
            36
            上传者