|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <math.h>
- void match(int i,int start,int end);
- void match(int i,int start,int end)
- {
- int mid = (start + end) / 2;
- int len = (mid - start + 1);
- if (start == end - 1)
- //找最近
- {
- printf(" %2d ",i);
- if (i % 2)
- {
- printf(" %2d ",i + 1);
- }
- else
- {
- printf(" %2d ",i - 1);
- }
- return ;
- }
- else
- {
- if (i > mid)
- {
- match(i,mid + 1,end);
- match(i - len,start,mid);
- }
- else
- {
- match(i,start,mid);
- match(i + len,mid + 1,end);
- }
- }
- }
- int main(void)
- {
- int n = 0;
- printf("请输入要参赛的队伍数量:");
- scanf("%d",&n);
- if (n & n - 1)
- {
- printf("参数队伍的数量必须是2的N次方!\n");
- return -1;
- }
-
- printf("编 号 ");
- for (int i = 1;i < n;i++)
- {
- printf("第%d天 ",i);
- }
- putchar('\n');
-
- for (int i = 1;i <= n;i++)
- {
- match(i,1,n);
- putchar('\n');
- }
-
- return 0;
- }
复制代码
当然,10以后的排版有点问题,但结果是正确的,如有错误,希望各位鱼油指教! |
|