当前位置: 首页 > news >正文

菏泽定制网站建设推广百度关键词屏蔽

菏泽定制网站建设推广,百度关键词屏蔽,南京网站设公司,seo兼职招聘《算法分析与设计》循环赛日程表算法 CONDITION1. 输入2的K次方支队伍,输出赛程表。 CONDITION2. 考虑队伍数量不是2的K次方情况下,输出赛程表。 【本题涉及算法:分治算法】 本文给出两个方法, 方法1只处理2^k(k>1)场景&am…

《算法分析与设计》循环赛日程表算法

CONDITION1. 输入2的K次方支队伍,输出赛程表。

CONDITION2. 考虑队伍数量不是2的K次方情况下,输出赛程表。

【本题涉及算法:分治算法】

本文给出两个方法,

方法1只处理2^k(k>=1)场景,方法2处理全部k>=2场景。(并给出参数选择是否随机排序)

方法1(tableDoublePrepare),方法2(tablePrepare),为对外提供接口。

实际逻辑方法处理为(tableDouble)与(table)

先上实现效果:

Preparing

SDK:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;

测试主体:

    static int[] arr2 = new int[50];  // 前缀表static int[][] arr0;  // 结果数组static int[][] arr1;  // 间接结果数组static int[][] arr1_;  // 结果数组public static void main(String[] args) {arr2[0] = 1;for (int i = 1; i < arr2.length; i++) {arr2[i] = arr2[i - 1] * 2;}Scanner sc = new Scanner(System.in);int n1 = sc.nextInt();int n2 = sc.nextInt();tableDoublePrepare(n1, 1, n1);printArr(arr0);tablePrepare(n2, 1, n2, true);  // 第二参数为是否随机排序printArr(arr1_);}/*** 打印二维数组(不限制方阵)* @param arr 二维数组*/public static void printArr(int[][] arr) {for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[0].length; j++) {System.out.printf("%4d", arr[i][j]);}System.out.println();}}

CONDITION1

Code:

   /*** 预处理进入循环赛表获取(只适应于2^k, k>=1)* @param n 人数* @param start 首位 比如1* @param end 尾位 比如8(真实比赛人数)*/public static void tableDoublePrepare(int n, int start, int end) {System.out.println("循环赛程表(2^k场景):");arr0 = new int[n][n];for (int i = 0; i < n; i++) {arr0[i][0] = i;  // 首列赋值}tableDouble(n, arr0, start, end, end / 2);}/*** 循环赛表获取(只适应于2^k, k>=1)* @param n 真实比赛人数* @param arr 循环赛表* @param start 首位 比如1* @param end 尾位 比如8(真实比赛人数)* @param disHalf 位差*/private static void tableDouble(int n, int[][] arr, int start, int end, int disHalf) {if (start == end - 1) {arr[0][start - 1] = arr[1][end - 1] = start;arr[0][end - 1] = arr[1][start - 1] = end;} else {tableDouble(n, arr, start, start + disHalf - 1, disHalf / 2);tableDouble(n, arr, end - disHalf + 1, end, disHalf / 2);for (int i = 0; i < disHalf; i++) {// 对应第一个tablefor (int j = start - 1; j < start + disHalf - 1; j++) {arr[i + disHalf][j + disHalf] = arr[i][j];}// 对应第二个tablefor (int j = end - disHalf; j < end; j++) {arr[i + disHalf][j - disHalf] = arr[i][j];}}}}

CONDITION2

Code:
 

    /*** 预处理进入循环赛表获取(适合任意大于等于2的比赛人数)* @param n 真实比赛人数* @param start 首位 比如1* @param end 尾位 比如8(真实比赛人数)* @param random_ 是否进行天数随机*/public static void tablePrepare(int n, int start, int end, boolean random_) {System.out.println("循环赛程表(全场景):");int l = 0;int r = arr2.length;while (l < r) {int mid = (l + r) / 2;if (arr2[mid] < end) {l = mid + 1;} else {r = mid - 1;}}n = arr2[l];arr1 = new int[n][n];for (int i = 0; i < end; i++) {arr1[i][0] = i;  // 首列赋值(超过end的不赋值)}table(n, arr1, start, arr2[l], arr2[l] / 2, end);if (random_) {HashSet<ArrayList<Integer>> set = new HashSet<>();for (int j = 1; j < n; j++) {ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < end; i++) {list.add(arr1[i][j]);}set.add(list);}int j = 1;for (ArrayList<Integer> list : set) {int i = 0;for (Integer integer : list) {arr1[i++][j] = integer;}j++;}}if (n == l) {arr1_ = arr1;} else {arr1_ = new int[end][n];for (int i = 0; i < end; i++) {arr1_[i] = arr1[i];}}}/*** 循环赛表获取(适合任意大于等于2的比赛人数)* @param n 总位差* @param arr 循环赛表* @param start 首位 比如1* @param end 尾位 比如8* @param disHalf 位差* @param ending 比赛人数(真实比赛人数)*/private static void table(int n, int[][] arr, int start, int end, int disHalf, int ending) {if (start == end - 1) {if (start <= ending) arr[0][start - 1] = arr[1][end - 1] = start;if (end <= ending) arr[0][end - 1] = arr[1][start - 1] = end;} else {table(n, arr, start, start + disHalf - 1, disHalf / 2, ending);table(n, arr, end - disHalf + 1, end, disHalf / 2, ending);for (int i = 0; i < disHalf && i < ending - disHalf; i++) {// 对应第一个tablefor (int j = start - 1; j < start + disHalf - 1; j++) {arr[i + disHalf][j + disHalf] = arr[i][j];}// 对应第二个tablefor (int j = end - disHalf; j < end; j++) {arr[i + disHalf][j - disHalf] = arr[i][j];}}}}
}

http://www.yayakq.cn/news/312847/

相关文章:

  • 湘潭做网站优化深圳网站建设 推广
  • 邢台做网站推广的公司汕头网络推广推荐
  • 基础的网站建设网站找谁做
  • 北京网站建设的服务公司如何给网站做防盗链
  • 百度突然搜不到网站什么是网络推广营销
  • 网站网页压缩安阳网站设计多少钱
  • 网站制作 深圳有什么公司中国住房建设部网站
  • 信用中国网站建设要求做个外贸网站
  • 国外做珠宝裸石的网站凡科登陆网站手机版
  • 方城微网站建设域名备案网站建设方案
  • 建网站原型图建站网页模板
  • 网站如何做用户的实名认证搭建网站的六个基本步骤流程
  • 长春网站优化方式访问WordPress速度
  • 白城百度网站建设常州武进建设局网站
  • 老域名对做网站的医院响应式网站建设方案
  • 郑州市二七建设局网站网站制作高手
  • vs做网站如何输出p2p网上贷款网站建设方案.docx
  • 专业彩票网站建设网站建设困难
  • 网站建设预估费用wordpress文章视频模板
  • 网站费用多少代码制作
  • 手机端网站设计制作案例高端网站建设
  • 网站设计前期沟通单南京小程序制作开发
  • 购物网站前台功能东莞如何建设网站制作平台
  • 保险理财网站建设网站备案有什么好处理
  • 网站开发小图标大全教你做吃的网站
  • 网站建设买服务器还是数据库响应式布局网站实例
  • 佛山做外贸网站服务cydia软件源网站开发
  • 学校网站建设客户需求调查问卷做视频投稿赚钱的网站好
  • 做营销策划要用到哪些网站温州市住房和城乡建设网站
  • 移动端的网站怎么做广州哪里学网络营销比较好