应天论坛

 找回密码
 参与我们

QQ登录

只需一步,快速开始

搜索
查看: 830|回复: 0

世界杯分组 c语言

[复制链接]

276

主题

303

帖子

3197

积分

管理员

湘南小侠客

Rank: 9Rank: 9Rank: 9

积分
3197

优质服务勋章论坛元老

QQ
发表于 2017-7-11 01:44:57 | 显示全部楼层 |阅读模式
只写了32强的分组,没有写32进16等等。

树画出来大致是这样的
                    阿根廷
         阿根廷             英格兰
     阿根廷   德国        日本     英格兰
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define T League
typedef struct T *T;
#define TreeHeigh 5

char *Other[] = {"英格兰","意大利","葡萄牙","克罗地亚","土耳其","瑞典","捷克","塞尔维亚","加纳","科特迪瓦","突尼斯","尼日利亚","喀麦隆","日本","韩国","澳大利亚","伊朗","美国","墨西哥","哥斯达黎加","洪都拉斯","巴拉圭","智利","厄瓜多尔"};

char *Send[] = { "乌拉圭","西班牙","德国","阿根廷","荷兰","法国","巴西","俄罗斯"};
int F_Send[ 8 ];
int F_Other[ 24 ];

struct T{
    int Score;
    int Heigh;
    T Left;
    T Right;
    char *Name;
};

void
INIT( T *Root, int Heigh );

void
Print( T Root );


int
main( void )
{
    T Root;
    int heigh;

    heigh = 0;

    Root = NULL;
    INIT( &Root, heigh );
    Print( Root );


    return 0;
}




void
INIT( T *Root, int Heigh )
{
    int f;
    static int g = -1;

    srand( ( unsigned )time( NULL ) );
        

    if( NULL == *Root )
    {

        T new = ( T )malloc( sizeof( struct T ) );
        if( NULL == new )
            exit( EXIT_FAILURE );
        new->Left = NULL;
        new->Right = NULL;
        new->Name = NULL;
        new->Score = -1;
        new->Heigh = Heigh;
        *Root = new;
    }

    if( TreeHeigh == ( *Root )->Heigh )
    {

        ++g;
        if( 0 == g % 4 )
        {
            while( 1 )
            {        
                f = rand( ) % 8;
                if( 0 == F_Send[ f ] )
                {
                    ( *Root )->Name = Send[ f ];
                    F_Send[ f ] = 1;
                    break;
                }
            }
        }
        else
        {
            while( 1 )
            {
                f = rand() % 24;
                if( 0 == F_Other[ f ] )
                {
                    ( *Root )->Name = Other[ f ];
                    F_Other[ f ] = 1;
                    break;
                }
            }
        }

    }

    if( TreeHeigh == Heigh )
        return;

    INIT( &(*Root)->Left, Heigh + 1 );
    INIT( &(*Root)->Right, Heigh + 1 );
}

void
Print( T Root )
{
    static int g = 0;
    static char ch = 'A';

    if( NULL == Root )
        return;
    if( NULL != Root->Name )
    {
        if( 0 == g % 4 )
            printf( "%c\n", ch++);
        printf( "%s ", Root->Name );
        ++g;
        if( 0 == g % 2 )
            printf( "\n" );


    }
    Print( Root->Left );
    Print( Root->Right );
}[/mw_shl_code]
每次见你穿短裤打领带,还穿个拖鞋,下次再这样穿不要从我家门口过了!
http://gsh.yzqz.cn/CassettePlayer/index.html

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 参与我们

本版积分规则

QQ|Archiver|手机版|小黑屋|应天社区 ( 湘ICP备17015224号 )

GMT+8, 2024-12-22 18:18 , Processed in 0.078125 second(s), 29 queries .

Powered by Discuz!

© 2001-2017 Comsenz Inc.


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@yzqz.cn

快速回复 返回顶部 返回列表