C语言 · 3000米排名预测
接下来m行,每行为一个围观党的相对排名预测。每行第一个数c表示他预测的人数,后面跟着c个0~n-1的不同的数,表示他预测的运动员相对排名,最后还有一个数,0表示这个预测是错误的,1表示是正确的。
下面k行,每行一个0~n-1的排列,为某一个可能的排名,相邻的数间用空格隔开。所有排名按字典序依次输出。
3 2
2 0 1 1
2 1 2 0
Input Sample 2:
3 2
2 0 1 1
2 2 1 0
2
0 2 1
2 0 1
Output Sample 2:
1
0 1 2
void dfs(当前状态){
if(当前状态为边界状态){
记录或输出
return;
}
for(i=;i<n;i++){//横向遍历解答树所有子节点
修改全局变量,扩展出一个子状态;
if(子状态满足约束条件){
dfs(子状态);
}
恢复全局变量;//回溯部分
}
}
本题代码如下:
/*
数据规模和约定:1<=n<=10, 2<=c<=n, 1<=m<=10
*/
#include<stdio.h>
#include<string.h>
int n,m;//n表运动员数量;m表预测数据组数
bool use[];//标记节点是否被选用
int str[][]={};
int flag[];
int map[][];
int k;//表满足预测的有多少种可能排名
int judgedfs(){
int x1=,x2=;
for(int i=;i<m;i++){
//表该组预测数据是对的
if(str[i][str[i][]+]== && x1){
int j=;//从每组数据的第二个元素开始遍历
//&&为了确保遍历深度; x<n表没有预测所有运动员的排名
for(int x=; j<=str[i][] && x<n; x++){
if(str[i][j]==flag[x]){
j++;
}
}
if(j<str[i][]+){//表该组数据遍历完成
x1=;
}
}else{//表该组预测数据是错的
int j=;
for(int x=; j<=str[i][] && x<n; x++){
if(str[i][j]==flag[x]){
j++;
}
}
if(j==str[i][]+){
x2=;
}
}
if(!x1 || !x2)//遍历完一组预测数据跳出循环
break;
}
//均为真返回真,否则返回假
if(x1 && x2)
return ;
else
return ;
}
void dfs(int begin){
if(begin==n && judgedfs()){//递归出口:已经搜索到最后一个运动员
for(int i=;i<n;i++){
map[k][i]=flag[i];//记录下将当前遍历到的运动员
}
k++;//可能的情况+1
}
if(begin<n){//执行递归搜索的条件
for(int i=;i<n;i++){
if(use[i]){//若为true,即未被选用
flag[begin]=i;//当前遍历位置记录下运动员的下标
use[i]=false;//此时选用
dfs(begin+);//递归调用,搜索下一个运动员
use[i]=true;//返回初值,或回溯
}
}
}
} int main(){
scanf("%d%d",&n,&m);
getchar();//处理此处的回车
for(int i=;i<m;i++){//m组预测数据
//表此组预测数据预测的人数,后面的循环要用到
scanf("%d",&str[i][]);
//最后一列(即str[i][str[i][0]+1)表此组预测是否正确
for(int j=;j<=str[i][]+;j++){
scanf("%d",&str[i][j]);
}
}
/*
标记当前位置是否已被选用:是:false;否:true;初值均为true.
*/
memset(use,true,sizeof(use));
k=;//对可能的情况置初值
dfs();//从第一个运动员开始搜索
//格式化输出结果
printf("%d\n",k);
for(int i=;i<k;i++){
for(int j=;j<n;j++){
printf("%d ",map[i][j]);
}
printf("\n");
}
return ;
}
C语言 · 3000米排名预测的更多相关文章
- Java实现 蓝桥杯VIP 算法提高 3000米排名预测
算法提高 3000米排名预测 时间限制:1.0s 内存限制:256.0MB 问题描述 3000米长跑时,围观党们兴高采烈地预测着最后的排名.因为他们来自不同的班,对所有运动员不一定都了解,于是他们分别 ...
- 蓝桥杯 算法提高 3000米排名预测 DFS 递归搜索 next_permutation()使用
#include <iostream> #include <algorithm> #include <queue> #include <cstring> ...
- kaggle——绝地求生游戏最终排名预测
绝地求生游戏最终排名预测 知识点 数据读取与预览 数据可视化 构建随机森林预测模型 导入数据并预览 先导入数据并预览.本次实验同样来源于 Kaggle 上的一个竞赛: 绝地求生排名预测 ,由于原始数据 ...
- 基于R语言的时间序列分析预测
数据来源: R语言自带 Nile 数据集(尼罗河流量) 分析工具:R-3.5.0 & Rstudio-1.1.453 #清理环境,加载包 rm(list=ls()) library(forec ...
- R语言的ARIMA模型预测
R通过RODBC连接数据库 stats包中的st函数建立时间序列 funitRoot包中的unitrootTest函数检验单位根 forecast包中的函数进行预测 差分用timeSeries包中di ...
- Redhat 5.8系统安装R语言作Arima模型预测
请见Github博客:http://wuxichen.github.io/Myblog/timeseries/2014/09/02/RJavaonLinux.html
- 不知道怎么改的尴尬R语言的ARIMA模型预测
数据还有很多没弄好,程序还没弄完全好. > read.xlsx("H:/ProjectPaper/论文/1.xlsx","Sheet1") > it ...
- 获取技能的成功经验和关于C语言学习的调查 2015528
内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...
- 20155228 获取技能的成功经验和关于C语言学习的调查
内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...
随机推荐
- java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)
原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html 代码: http://files.cnblogs.com/k ...
- dpkg卸载deb包
一.背景: 一个脚本安装mysql,结果提示缺少依赖库,安装失败. 二.查询: 此时查询deb文件已经安装的情况,得到这个结果: root@debian:~# dpkg -l |grep mysql- ...
- Objective-C 资源收藏
日志 https://github.com/robbiehanson/CocoaLumberjack 反汇编 otool nm http://stackoverflow.com/questi ...
- List遍历Java 8 Streams map() examples
1. A List of Strings to Uppercase 1.1 Simple Java example to convert a list of Strings to upper case ...
- ElasticSearh更新nested字段(Array数组)。怎么根据查询条件(query)复制一个(index)到新的Index how to update by query a nested fields data for elasticsearch
GET usernested/_search { "query": { "nested": { "path": "tags&quo ...
- linux分享四:cron系统
cron相关文件: /etc/cron.monthly/ /etc/cron.weekly/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.d/ /etc/ ...
- linux分享三:文件操作
查找文件命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配 合数据库查看文件位置 find 实际搜寻硬盘查询文件 ...
- 全局获取 (Activity)Context,实现全局弹出 Dialog
为什么需要一个全局的 (Activity)Context 需求1:在进入 app 的时候,要求做版本检测,有新的版本的时候,弹出一个 AlertDialog,提示用户版本更新 需求2:从别的设备挤下来 ...
- 如何安全的下载Devcon.exe文件
devcon.exe是windows设备管理器的命令行版本,可以让你在cmd中修改设备,但是微软没有提供单独的下载,只能下载一个2G多的wdk包(windows drive kits)才行.私下使用别 ...
- rsync 实现文件同步 (重要数据通过rsyncr把数据同步到不同的两台服务器上,这样可以防止服务器的硬盘故障导致数据丢失) 客户端同步时如果要排某个目录
rsync是unix系统下的数据镜像 备份工具,一般linux系统都 自带: # rpm -qa|grep rsync rsync-3.0.9-17.el7.x86_64 服务器端:10.100.0. ...