資源簡介
1. 問題描述: 說明:設計一個滿足以下要求的比賽日程表: (1)每個選手必須與其他n-1個選手各賽一次; (2)每個選手一天只能賽一次; (3)循環賽一共進行n-1天。 設計要求:請使用C語言編程,設計一個有效的算法解決循環賽日程表問題。 設計提示:按分治策略,將所有的選手分為兩半,n個選手的比賽日程表就可以通過為n/2個選手設計的比賽日程表來決定。遞歸地用對選手進行分割,直到只剩下2個選手時,比賽日程表的制定就變得很簡單。這時只要讓這2個選手進行比賽就可以了。
代碼片段和文件信息
#include?“stdio.h“
#include?“conio.h“
int?a[100][100]={0};?/*數組a為全局變量*/
int?b[100]={0};
int?main()
{
??int?ijntk;
??
??printf(“please?input?the?number:“);
??scanf(“%d“&n);
??tournament(n);???????????/*調用函數*/
?if(n%2==0&&n>1)????????????/*n為偶數的輸出日程表*/
{?printf(“\n?the?table?is:\n“);
????for(t=1;t ?????{b[t]=t;
??????if(t==1){
??????????printf(“\n??????日期:%d“b[t]);
??????}
??????else{
??????printf(“%5d“b[t]);?
??????}
?????}
??????printf(“\n“);
???for(k=0;k ???printf(“========“);
???}
???printf(“\n“);
???printf(“選手?|\n“);
???getch();
??for(i=0;i ??{
??for(j=0;j ??{
??printf(“%5d“a[i][j]);
??if(j==0)
??????printf(“|“);
??}
???printf(“\n“);
???for(k=0;k ???printf(“=======“);
???}
???printf(“\n“);
?
??}
??getch();
}
if(n%2==1&&n>1)??????????????/*n為奇數的輸出日程表*/
{?printf(“\n?the?table?is:\n“);
????for(t=1;t ?????{b[t]=t;
??????if(t==1){
??????????printf(“\n??????日期:%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2471??2010-07-13?22:11??循環賽日程表\xunhuaisai1.c
?????文件??????45292??2010-07-13?22:22??循環賽日程表\未命名.jpg
?????文件??????45188??2010-07-13?22:22??循環賽日程表\未命名1.jpg
????..A.SH.?????11776??2010-07-13?22:24??循環賽日程表\Thumbs.db
?????文件?????142336??2010-09-03?22:27??循環賽日程表\循環賽日程表.doc
?????目錄??????????0??2010-09-03?22:27??循環賽日程表
-----------?---------??----------?-----??----
???????????????247063????????????????????6
評論
共有 條評論