codeforce Pashmak and Buses(dfs枚举)

简介:

/*
   题意:n个同学,k个车, 取旅游d天!
   要求所有的学生没有两个或者两个以上的在同一辆车上共同带d天! 输出可行的方案!
   
   对于d行n列的矩阵,第i行第j列表示的是第i天第j个同学所在的车号!
   也就是保证所有行不全相同,即每一列都是不相同的!
   如果每一列都不相同就是表示第j个同学(第j列)在这d天中不会和其他同学(列)在这d天中 都在同一辆车中! 
   
   思路:对于每一列我们枚举d天该学生所在的车号!它的下一列只保证有一个元素和它不同就行了!依次下去!
   
   还有一共有 d 个位置来填充车号(1....k)!每一个位置的数字都可以是(1...k)中的一个数字。
   总共的枚举次数为 k^d, 一共有n个同学,枚举n次就可以了,所以有 k^d >=n才有解! 
*/
#include<iostream>
#include<cstdio>
using namespace std;

int ret[1005][1005];
int a[1005];
int n, k, d;
int cnt;
bool dfs(int cur){
   if(cur>d){
        ++cnt;
        for(int i=1; i<=d; ++i)
       ret[i][cnt]=a[i];
        if(cnt==n)
          return true;
     return false;
   }
   for(int i=1; i<=k; ++i){
       a[cur]=i;
       if(dfs(cur+1))//强力剪枝....搜索完成后不在进行搜索! 
          return true;
   }
   return false;
}

int main(){
   while(scanf("%d%d%d", &n, &k, &d)!=EOF){
          cnt=0;
          int kk=k;
          bool flag=false;
          for(int i=1; i<=d; ++i){//保证k^d>=n才可能有解! 
                if(kk>=n){
              flag=true;
              break;
          }
          kk*=k;
       }
       if(flag){
           dfs(1);
           for(int i=1; i<=d; ++i){
              for(int j=1; j<=n; ++j){
                 printf("%d", ret[i][j]);
                 if(j!=n)  printf(" "); 
              }
              printf("\n");
           }
       }
       else printf("-1\n");
   }
   return 0;
}

目录
相关文章
|
供应链 监控 算法
ERP系统中的库存优化与库存周转率分析解析
【7月更文挑战第25天】 ERP系统中的库存优化与库存周转率分析解析
1256 1
|
SQL Java 关系型数据库
Spring Boot常用数据库开发技术总结:JDBCTemplate、JPA、Mybatis
1.概述 数据库开发一直是JAVA开发的核心之一,作为现在JAVA EE的基石框架,Spring Boot自身携带了一个JDBCTemplate框架,其对JDBC进行了基础的封装,使得Spring Boot原生就支持据库开发。同时Spring Boot也不排斥其它优秀的持久层框架,允许他们以极低的代价平滑的接入。 本文主要介绍最常用到的三个持久层框架,JdbcTemplate、JPA、mybatis如何接入Spring Boot并在其上进行开发。
545 0
|
运维 安全 固态存储
不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。
不需要的binlog如何手动干掉?放心,这不是删库更不用跑路。
499 0
|
NoSQL Java Scala
Flink - The object probably contains or references non serializable fields 无法序列化问题
使用 Flink 自定义 Source 生成数据时,集群提交任务时显示 org.apache.log4j.Logger@72c927f1 is not serializable. The object probably contains or references non serializable fields.
1745 0
Flink - The object probably contains or references non serializable fields 无法序列化问题
|
存储 Linux PHP
CentOS7 部署安装FastDFS多机版(三)——安装FastDFS的PHP扩展
CentOS7 部署安装FastDFS多机版(三)——安装FastDFS的PHP扩展
277 0
CentOS7 部署安装FastDFS多机版(三)——安装FastDFS的PHP扩展
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
305 116
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~