bzoj2665[CQOI2012]编号

这题竟然是枚举,竟然是枚举,竟然是枚举,重要的事情不得不说

然后要三个位置不同嘛,那么就判断某五个位置相同的情况不存在就可以了

然后直接枚举

#include<iostream>  
#include<cstdio>  
#include<cstring>  
int n;  
bool f[22][20][20][20][20][20];  
using namespace std;  
void out(int i,int j,int k,int l,int a,int b,int c){  
   	if(i<10){
   		cout<<i;
   	}else{
   		cout<<char(i-10+(int)'a');
	}
   	if(j<10){
   		cout<<j;
   	}else{
   		cout<<char(j-10+(int)'a');
	}
   	if(k<10){
   		cout<<k;
	}else{
		cout<<char(k-10+(int)'a');
	}
   	if(l<10){
   		cout<<l;
	}else{
	   	cout<<char(l-10+(int)'a');
	}
   	if(a<10){
   		cout<<a;
	}else{
	   	cout<<char(a-10+(int)'a');
	}
   	if(b<10){
   		cout<<b;
	}else{
		cout<<char(b-10+(int)'a');
	}
   	if(c<10){
   		cout<<c;
	}else{
	   cout<<char(c-10+(int)'a');
	}
}   
int main(){
	cin>>n; 
  	for(int i=0;i<=15;i++){
  		for(int j=0;j<=15;j++){
  			for(int k=0;k<=15;k++){
  				for(int l=0;l<=15;l++){
  					for(int a=0;a<=15;a++){
  						for(int b=0;b<=15;b++){
  							for(int c=0;c<=15;c++){
  								if(!f[1][k][l][a][b][c]&&!f[2][j][l][a][b][c]&&  
                    				!f[3][j][k][a][b][c]&&!f[4][j][k][l][b][c]&&  
                    				!f[5][j][k][l][a][c]&&!f[6][j][k][l][a][b]&&  
                    				!f[7][i][l][a][b][c]&&!f[8][i][k][a][b][c]&&  
                    				!f[9][i][k][l][b][c]&&!f[10][i][k][l][a][c]&&  
                    				!f[11][i][k][l][a][b]&&!f[12][i][j][a][b][c]&&  
                    				!f[13][i][j][l][b][c]&&!f[14][i][j][l][a][c]&&  
                    				!f[15][i][j][l][a][b]&&!f[16][i][j][k][b][c]&&  
                    				!f[17][i][j][k][a][c]&&!f[18][i][j][k][a][b]&&  
                    				!f[19][i][j][k][l][c]&&!f[20][i][j][k][l][b]&&  
                    				!f[21][i][j][k][l][a]){  
                 						n--;  
                 						if(n==0){  
                   							out(i,j,k,l,a,b,c);  
                   							return 0;  
            							}  
               							f[1][k][l][a][b][c]=1;f[2][j][l][a][b][c]=1;
               							f[3][j][k][a][b][c]=1;f[4][j][k][l][b][c]=1;
               							f[5][j][k][l][a][c]=1;f[6][j][k][l][a][b]=1;
               							f[7][i][l][a][b][c]=1;f[8][i][k][a][b][c]=1;
               							f[9][i][k][l][b][c]=1;f[10][i][k][l][a][c]=1;
               							f[11][i][k][l][a][b]=1;f[12][i][j][a][b][c]=1;
               							f[13][i][j][l][b][c]=1;f[14][i][j][l][a][c]=1;
               							f[15][i][j][l][a][b]=1;f[16][i][j][k][b][c]=1;
               							f[17][i][j][k][a][c]=1;f[18][i][j][k][a][b]=1;
               							f[19][i][j][k][l][c]=1;f[20][i][j][k][l][b]=1;
               							f[21][i][j][k][l][a]=1;
             						}
							  }
                				
						  }
              				
					  }
            			
				  }
          			
			  }
        		
		  }
      		
	  }
    return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值