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
- 标签
- 递交数
- 108
- 已通过
- 36
- 上传者