5 条题解
- 
  2
#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
#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
#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
#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
#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
 - 标签
 - 递交数
 - 109
 - 已通过
 - 37
 - 上传者