算法提高 3000米排名预测

时间限制:1.0s 内存限制:256.0MB

问题描述

  3000米长跑时,围观党们兴高采烈地预测着最后的排名。因为他们来自不同的班,对所有运动员不一定都了解,于是他们分别对自己了解的一些运动员的实力作出了评估,即对部分运动员做了相对排名的预测,并且告诉了可怜留守的班长。因为无聊,于是他们就组团去打Dota去了。比赛结束后他们向班长询问最后的排名,但班长不记得了,只记得他们中哪些人的预测是正确的,哪些人的预测是错误的。他们想知道比赛的排名可能是什么。

输入格式

  第一行两个整数n, m,n为运动员数量,m为围观党数量。运动员编号从0到n-1。

  接下来m行,每行为一个围观党的相对排名预测。每行第一个数c表示他预测的人数,后面跟着c个0~n-1的不同的数,表示他预测的运动员相对排名,最后还有一个数,0表示这个预测是错误的,1表示是正确的。

输出格式

  第一行一个数k为有多少种排名的可能。

  下面k行,每行一个0~n-1的排列,为某一个可能的排名,相邻的数间用空格隔开。所有排名按字典序依次输出。

样例输入

Input Sample 1:

3 2

2 0 1 1

2 1 2 0

Input Sample 2:

3 2

2 0 1 1

2 2 1 0

样例输出

Output Sample 1:

2

0 2 1

2 0 1

Output Sample 2:

1

0 1 2

数据规模和约定

  1<=n<=10, 2<=c<=n, 1<=m<=10,保证数据合法,且答案中排名可能数不超过20000。对于一个排名序列,一个预测是正确的,当且仅当预测的排名的相对顺序是排名序列的一个子序列。一个预测是错误的,当且仅当这个预测不正确。

import java.util.Scanner;

public class 三千米排名预测 {
static int n,m;
static int[][] fg;
static int sum=0;
static int[][] jieguo;
static boolean[] bl;
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
m=scan.nextInt();
fg=new int[m][12];
int[] sai=new int[n];
bl=new boolean[n];
for(int i=0;i<bl.length;i++)
bl[i]=true;
jieguo=new int[20000][n];
for(int i=0;i<m;i++)
{
fg[i][0]=scan.nextInt();
for(int j=1;j<fg[i][0]+2;j++)
{
fg[i][j]=scan.nextInt();
}
}
f(0, sai);
System.out.println(sum);
for(int i=0;i<sum;i++)
{
for(int j=0;j<n;j++)
{
System.out.print(jieguo[i][j]+" ");
}
System.out.println();
}
}
public static boolean panduan(int[] sai) {
for(int i=0;i<m;i++)
{
int h=1;
for(int j=0;j<sai.length;j++)
{
if(sai[j]==fg[i][h])
{
h++;
if(h==fg[i][0]+1) break;
}
}
if(!(h==fg[i][0]+1&&fg[i][fg[i][0]+1]==1)&&!(h!=fg[i][0]+1&&fg[i][fg[i][0]+1]==0))
{
return false;
}
}
return true;
}
public static void f(int start,int[] sai) {
if(start==n)
{
if(panduan(sai))
{
for(int i=0;i<sai.length;i++)
jieguo[sum][i]=sai[i];
sum++;
}
return;
}
for(int i=0;i<n;i++)
{
if(bl[i])
{
bl[i]=false;
sai[start]=i;
f(start+1, sai);
bl[i]=true;
}
}
} }

Java实现 蓝桥杯VIP 算法提高 3000米排名预测的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  2. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  4. Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...

  5. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  6. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  7. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  8. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  9. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

随机推荐

  1. vue的slot

    1.明确一点:分发内容是在父作用域内编译: 2.slot作为备用内容的条件:宿主元素为空且父元素没有要分发的内容. 3.具名slot:<slot name="XXX"> ...

  2. Python+Selenium+Chrome 的一个案例

    第一步,下载chromeDrive:http://npm.taobao.org/mirrors/chromedriver(我下载的是2.43版本的chromedriver_win32.zip) 下载之 ...

  3. Django组件content-type使用方法详解

    前言 参考博客:https://www.zhangshengrong.com/p/zD1yQJwp1r/ 一个表和多个表进行关联,但具体随着业务的加深,表不断的增加,关联的数量不断的增加,怎么通过一开 ...

  4. linux常用命令---yum 工具

    yum 工具 yum工具是红帽子才有的软件管理工具,例如suse乌班图等系统,没有yum,apt-get apt-install

  5. Django视图函数之三种响应模式

    视图函数响应处理: from django.shortcuts import render,HttpResponse,redirect (1)render 处理模板文件,可以渲染模板,第一个参数必须为 ...

  6. 如何分析和提高(C/C++)程序的编译速度?

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/lihuidashen/p/129354 ...

  7. Shift - And字符串快速处理 hdu5972+cf

    基础知识介绍 KMP就是不断往前找1的位置,而ShiftAnd经过三步处理已经完成这个迭代的过程了 如果匹配两个字符集有限的字符串的话,那么Shift-And比kmp要快,找区间内某字符串出现的数目也 ...

  8. 去重函数unique,sort,erase的应用

    std::unique 一.总述 unique函数属于STL中比较常用函数,它的功能是元素去重.即"删除"序列中所有相邻的重复元素(只保留一个).此处的删除,并不 是真的删除,而是 ...

  9. Java-main方法中调用非static方法

    java的calss中,在public static void main(String[] args) { }方法中调用非static的方法:在main方法中创建该calss的对象,用对象调用非sta ...

  10. Linux中查看磁盘大小、文件大小、排序方法小结

    一,查看磁盘空间大小的命令:dfdf命令用于查看磁盘分区上的磁盘空间,包括使用了多少,还剩多少,默认单位是KB 比如以下命令: df -hl执行结果如下: 执行的结果每列的含义: 第一列Filesys ...