全文预览

循环赛日程表问题-课件·PPT

上传者:相惜 |  格式:ppt  |  页数:9 |  大小:0KB

文档介绍
赛一场;? ——每个选手一天只能赛一场;? ——循环赛一共进行n-1天。Рn=1Р具体Р抽象Рn=2Р1Р2Р4/9Р解题思路Р问题描述:Р——每个选手必须与其他n-1个选手各赛一场;? ——每个选手一天只能赛一场;? ——循环赛一共进行n-1天。Рn=4Р具体Р抽象Р3Р4Р4Р1Р2Р3Р1Р2Р4Р3Р5/9Р解题思路Рn=8Р6/9Р程序实现Рvoid table(int **a,int start,int end)?{ if(start >= end || start <= 0) return;? int n = end - start + 1;? if(n==2)? {? a[start][1] = start+1;? a[start+1][1] = start;? return;? }? int mid = (end + start)/2;? table(a, start, mid);? table(a, mid+1, end);? copy(a,start,end);?}Р图示Р隐藏Р7/9Р程序实现Рvoid copy(int **a,int start,int end)?{ if(start >= end || start <= 0) return;? int n = end - start + 1;int m = n/2;? int mid = (end + start)/2;? for(int i=mid+1;i<=end;i++)? { for(int j=m;j<n;j++)? { a[i][j] = a[i-m][j-m];? }? }? for(int i=start;i<=mid;i++)? { for(int j=m;j<n;j++)? { a[i][j] = a[i+m][j-m];? }? }?}Р图示Р隐藏Р8/9Р程序实现Р9/9

收藏

分享

举报
下载此文档