1. 程式人生 > >36.n支隊伍比賽,分別編號為0,1,2。。。。n-1,已知它們之間的實力對比關係

36.n支隊伍比賽,分別編號為0,1,2。。。。n-1,已知它們之間的實力對比關係

題目:

谷歌筆試:
n支隊伍比賽,分別編號為0,1,2。。。。n-1,已知它們之間的實力對比關係,
儲存在一個二維陣列w[n][n]中,w[i][j] 的值代表編號為i,j的隊伍中更強的一支。
所以w[i][j]=i 或者j,現在給出它們的出場順序,並存儲在陣列order[n]中,
比如order[n] = {4,3,5,8,1......},那麼第一輪比賽就是 4對3, 5對8。.......
勝者晉級,敗者淘汰,同一輪淘汰的所有隊伍排名不再細分,即可以隨便排,
下一輪由上一輪的勝者按照順序,再依次兩兩比,比如可能是4對5,直至出現第一名
程式設計實現,給出二維陣列w,一維陣列order 和 用於輸出比賽名次的陣列result[n],求出result。


答案:

//20130415
#include <iostream>

using namespace std;

void kout(int w[][5], int order[], int result[], int n)
{
	int i = 0;
	int j = 0;
	memcpy(result, order, n*sizeof(int));
	while (n > 1)
	{
		i = 0;
		j = 0;
		for (;j < n/2;)
		{
			if (order[i] == w[order[i]][order[i+1]])
			{
				result[j] = order[i];
				result[n-1-j] = order[i+1];
			}
			else
			{
				result[j] = order[i+1];
				result[n-1-j] = order[i];
			}
			i = i + 2;
			j = j + 1;
		}
		  
		if (n % 2 != 0)
		{
			result[j] = order[i];
			n = n + 1;
		}
		n = n/2;
		memcpy(order,result,n*sizeof(int));
	}
}
int main()
{
	int const n = 5;
	int w[][5] = {
		{0,1,0,3,0},
		{1,1,2,3,1},
		{0,2,2,2,4},
		{3,3,2,3,3},
		{0,1,4,3,4}
	};
	int order1[n] = {0,1,2,3,4};

	int result1[n] = {0};
	kout(w, order1, result1, n);

	int const m = 4;
	int s[][5] = {
		{0,1,0,3},
		{1,1,2,3},
		{0,2,2,2},
		{3,3,2,3}
	};
	int order2[m] = {0,1,2,3};
	int result2[m] = {0};
	kout(s, order2, result2, m);
	return 0;
}


相關推薦

36.n隊伍比賽分別編號012n-1它們之間實力對比關係

題目: 谷歌筆試:n支隊伍比賽,分別編號為0,1,2。。。。n-1,已知它們之間的實力對比關係,儲存在一個二維陣列w[n][n]中,w[i][j] 的值代表編號為i,j的隊伍中更強的一支。所以w[i][j]=i 或者j,現在給出它們的出場順序,並存儲在陣列order[n]中

n 隊伍比賽分別編號012......n-1它們之間實力對比關係儲存在一個二維陣列w[n][n]中

題目: n 支隊伍比賽,分別編號為0,1,2......n-1,已知它們之間的實力對比關係,儲存在一個二維陣列w[n][n]中,w[i][j] 的值代表編號為i,j 的隊伍中更強的一支,所以w[i][j]=i 或者j,現在給出它們的出場順序,並存儲在陣列order[n]

約瑟夫環問題:有n個人排成一列或是一圈編號k的人開始報數數到m的那個人出列(Java實現)

文章目錄1.題目2.解析3.總程式碼 約瑟夫環問題 約瑟夫環描述:約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又

(程式設計師面試寶典)n個人圍坐在一張圓桌旁編號k的人開始..................

【題目】 設有n個人(以編號為1,2,3…….n分別表示)圍坐在圓桌周圍,從編號為k的人開始報數,數到m的人就站出來,他的下一個人又從1開始報數,數到m的人就站出來,依此規律重複下去,知道全部的人都站出來為止。 【程式碼實現】 這裡選擇迴圈連結串列作為

用小於等於n元去買100只雞大雞5元/只小雞3元/只還有一種1/3元/只得小雞分別x,y,z只程式設計求解x,y,z所有可能解

/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:

CF E. Vasya and a Tree】 dfs+樹狀陣列(給你一棵n個節點的樹每個點有一個權值初始全為0,m次操作每次三個數(v, d, x)表示只考慮以v根的子樹將所有與v點距離小於等於d的點權值全部加上x求所有操作完畢後所有節點的值)

題意: 給你一棵n個節點的樹,每個點有一個權值,初始全為0,m次操作,每次三個數(v, d, x)表示只考慮以v為根的子樹,將所有與v點距離小於等於d的點權值全部加上x,求所有操作完畢後,所有節點的值   首先要明確兩件事情性質1.每個人的操作只會影響到他的子孫(包括自己) 性質1.每個人的操

SQL Server 檢測到基於一致性的邏輯 I/O 錯誤 pageid 不正確(應 1:1772但實際 0:0)在文件 'D:Program FilesMicrosoft SQL Ser

red 完成 sdn blank net tools ocl views 偏移 SQL Server 檢測到基於一致性的邏輯 I/O 錯誤 pageid 不正確(應為 1:1772,但實際為 0:0)。在文件 ‘D:\Program Files\Microsoft S

12、3、4個數字能組成多少個互不相同且無重復數字的三位數?都是多少?

無重復 個數 nbsp 宋體 spa 個數字 bsp != 重復數 .程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。 2.程序源代碼: ‘‘‘ for i in range(1,5): for j in range

Java 數組 要求將以上數組中的 0 項去掉將不 0 的值存入一個新的數組

pac 數組 system 靜態 args 將不 pub bsp clas package com.xuyigang1234.chp01; public class Demo9 { public static void main(String[] args) {

題目:有12、3、4個數字能組成多少個互不相同且無重複數字的四位數?都是多少?

#include<stdio.h> int main() { int i,j,k,t=0,l; for(i=1;i<5;i++) for(j=1;j<5;j++) for(k=1;k<5;k++) for(l=1;l<5;l+

題目:有12、3、4個數字能組成多少個互不相同且無重複數字的三位數?都是多少?

for迴圈的巢狀輸出即可,不要想太多。 public class Test11 { public static void main(String[] args) { int i,j,k,sum = 0; System.out.print("符合條件的數有:"

jupyter notebook下.ipynb格式執行SSD程式碼正常但是轉換.py格式在終端用python 指令執行就報錯請問這是為什麼?

nvidia-smi檢視自己的gpu資訊 export CUDA_VISIBLE_DEVICES='' 在終端python 之前輸入,勉強能用,ssd速度為4fps太慢 解決方法一: 一些部落格(https://blog.csdn.net/zjc910997316/article/

Python——有12、3、4個數字能組成多少個互不相同且無重複數字的三位數?都是多少?

用python做一個簡單的數字題,希望多初學者帶來一點點幫助 第一種方式: 1 for x in range(1,5): 2 for y in range(1,5): 3 for z in range(1,5): 4 if (x!=y) and (y

**MySql基礎 篇1/共2篇 [史上最全重點web基礎day02] *

今日內容: 1. mysql概述 2. sql概述 3. DDl 4. DML MySql概述: 1. 記憶體和檔案的優缺點: * 記憶體:速度快,但是不能永久儲存,資料是臨時狀態。 * 檔案:資料可以永久儲存,操作資料不方便,查詢某個資料。 2. 資料庫

12、4、9個數字能組成多少個互不相同且無重複數字的三位數?都是多少?

1 int arr[] = { 1, 2, 4, 9 }; 2 for (int i = 0, num = 0; i < arr.length; i++) { 3 for (int j = 0; j < arr.length; j++) { 4

genymotion 下載模擬器下n久特別慢無法下載進度0教你用迅雷下載這些虛擬機器多爽啊想暫停就暫停

genymotion 下載裝置一直失敗 genymotion無法下載虛擬機器的解決辦法。 通通用我這個 ,迅雷吧。簡單多了。 http://dl.genymotion.com/dists/4.1.1/ova/genymotion_vbox86p_4.1.

C#匯出Excel時第一個0時不顯示

只需在前面加上單引號 " ' "可,如下 dcv[2] ="'" +drBH["BH_CHDZ"].ToString(); ;//補貨倉 詳細程式碼如下: private void Report_BHD_Excel_MB()//轉Excel模板;         {

spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 整合通用maper與分頁外掛:

spring boot 1.4.2.RELEASE+Thymeleaf+mybatis 整合通用maper,與分頁外掛: pom.xml <parent> <groupId>org.springframe

C# Form.Hide()後再 Show()時Dock不 none的 控制元件將不會顯示

  具體原因不是很清楚,查看了下 Control 的原始碼, Hide 和Show方法只是改變了 Visible屬性,然後看了下OnVisibleChanged方法,裡面的內容比較多,我就沒細看,想來也是控制其上的子控制元件的 visible屬性,但沒看到與 dock有何關

給定一個二叉樹節點值0-9從根節點到葉子結點組成一個數求二叉樹所有組成的數的和

 根節點 到葉子節點組成一個數 前序遍歷  每層的值都為上一層*10+本層結點的值 int sumNumbers(TreeNode *root) { int sum=0; if(root==NULL) re