#include<bits/stdc++.h>
using namespace std;
int n;
int a[10];
bool vis[10];
void Dfs(int k) {
if(k==n) {
for(int i=0; i<k; i++)
cout<<a[i]<<" ";
cout<<"\n";
return ;
}
for(int i=1; i<=n; i++)
if(!vis[i]) {
vis[i]=true;
a[k]=i;
Dfs(k+1);
vis[i]=false;
}
}
int main() {
cin>>n;
Dfs(0);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,r;
int a[30]= {1};
bool vis[30];
void Dfs(int k) {
if(k>r) {
for(int i=1; i<k; i++)
cout<<a[i]<<" ";
cout<<"\n";
return ;
}
for(int i=a[k-1]; i<=n; i++)
if(!vis[i]) {
vis[i]=true;
a[k]=i;
Dfs(k+1);
vis[i]=false;
}
}
int main() {
cin>>n>>r;
Dfs(1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,t[21];
bool vis[21];
bool f,ff;
void Dfs(int k) {
if(k>n) {
for(int i=1; i<n; i++)
cout<<t[i]<<" ";
cout<<t[n]<<"\n";
f=true;
return ;
}
for(int i=1; i<=n; i++) {
if(vis[i])
continue;
ff=false;
for(int j=1; j<k; j++)
if(abs(k-j)==abs(i-t[j])) {
ff=true;
break;
}
if(!ff) {
t[k]=i;
vis[i]=true;
Dfs(k+1);
vis[i]=false;
}
}
}
int main() {
cin>>n;
Dfs(1);
if(!f)
cout<<"no solute!";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int a['z'+1];
char ans[510];
int n,tot;
void dfs(int t) {
if(t>n) {
for(int i=1; i<=n; i++)
printf("%c",ans[i]);
printf("\n");
tot++;
return;
}
for(int i='a'; i<='z'; i++) {
if(a[i]>0) {
ans[t]=i;
a[i]--;
dfs(t+1);
a[i]++;
}
}
}
int main() {
string s;
cin>>n>>s;
for(int i=0; i<s.size(); i++) {
a[s[i]]++;
}
dfs(1);
cout<<tot;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n;
int c[21][21];
int mi=1e9;
bool vis[21];
void Dfs(int k,int t) {
if(t>mi)
return;
if(k==n) {
mi=t;
return;
}
for(int i=1; i<=n; i++)
if(!vis[i]) {
vis[i]=true;
Dfs(k+1,t+c[k][i]);
vis[i]=false;
}
}
int main() {
cin>>n;
for(int i=0; i<n; i++)
for(int j=1; j<=n; j++)
cin>>c[i][j];
Dfs(0,0);
cout<<mi;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,c;
int a[51];
int mx,tot;
int max(int a,int b){
return a>b?a:b;
}
void Dfs(int k,int t) {
if(t>c)
return;
if(k==n) {
mx=max(mx,t);
if(mx==c){
cout<<c;
exit(0);
}
return;
}
Dfs(k+1,t);
Dfs(k+1,t+a[k]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>c;
for(int i=0; i<n; i++)
cin>>a[i],tot+=a[i];
Dfs(0,0);
cout<<mx;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int s[15];
int n,sum;
void dfs(int k){
if(k>n){
sum++;
return ;
}
for(int i=1;i<=3;i++){
s[k]=i;
if(s[k]!=s[k-2]||s[k-1]!=s[k-3])
dfs(k+1);
}
}
int main()
{
cin>>n;
dfs(1);
cout<<sum;
}
#include<bits/stdc++.h>
using namespace std;
string a[3]={"0010100100","0111010111","0111000101"};
string ans="0011100111";
int g[3]={70,50,30};
int gol(string a,string b){
int cnt=0;
for(int i=0;i<a.size();i++)
cnt+=(a[i]==b[i]);
return cnt*10;
}
void Dfs(int k,string s){
if(k==10){
for(int i=0;i<3;i++)
if(gol(s,a[i])!=g[i])
return;
cout<<gol(s,ans);
exit(0);
}
Dfs(k+1,s+"0");
Dfs(k+1,s+"1");
}
int main()
{
Dfs(0,"");
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int ser[8][2]={{0,1},{0,-1},{-1,0},{1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
int vis[15][15];
int dp[15][15],n,ans=0;
void dfs(int x,int y){
if(x==0&&y==n-1){
ans++;
return;
}
for(int i=0;i<8;i++){
int tx=x+ser[i][0];
int ty=y+ser[i][1];
if(tx>=0&&tx<n&&ty>=0&&ty<n&&!dp[tx][ty]&&!vis[tx][ty]){
vis[tx][ty]=true;
dfs(tx,ty);
vis[tx][ty]=false;
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
scanf("%d",&dp[i][j]);
}
vis[0][0]=true;
dfs(0,0);
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int mp[110][110];
int vis[110];
int dp[110];
int n,m,ans;
void dfs(int k,int v){
if(k>n){
if(v>ans){
ans=v;
for(int i=1;i<=n;i++)
dp[i]=vis[i];
}
return ;
}
if(v+n-k+1<ans)
return ;//对选取的筛选
int f=0;
for(int i=1;i<k;i++){
if(mp[i][k]&&vis[i]){
f=1;
break;
}
}
if(!f){
vis[k]=true;
dfs(k+1,v+1);
vis[k]=false;
}
dfs(k+1,v);
}
int main()
{
int a,b;
cin>>n>>m;
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
mp[a][b]=true;
mp[b][a]=true;
}
dfs(1,0);
printf("%d\n",ans);
for(int i=1;i<n;i++)
printf("%d ",dp[i]);
printf("%d",dp[n]);
}
#include<bits/stdc++.h>
using namespace std;
int dp[25];
int temp[25];
int n,k,ans=1e9;
void dfs(int t){
if(t>n){
int tans=0;
for(int i=1;i<=k;i++)
tans=max(tans,temp[i]);
ans=min(ans,tans);
return ;
}
for(int i=1;i<=k;i++){
temp[i]=temp[i]+dp[t];
if(temp[i]<ans)
dfs(t+1);
temp[i]=temp[i]-dp[t];
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
scanf("%d",&dp[i]);
dfs(1);
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,m,k,sum;
int vis[101];
int gra[101][101];
int isok(int x)
{
for(int i=1;i<x;i++)
if(gra[i][x]==1&&vis[i]==vis[x])
return false;
return true;
}
void dfs(int t)
{
if(t>n){
sum++;
return ;
}
for(int i=1;i<=m;i++){
vis[t]=i;
if(isok(t))
dfs(t+1);
vis[t]=false;
}
}
int main()
{
cin>>n>>k>>m;
int x,y;
for(int i=1;i<=k;i++){
cin>>x>>y;
gra[x][y]=gra[y][x]=1;
}
dfs(1);
cout<<sum;
return 0;
}