八枚硬币(c\python略)

来源:互联网 发布:京东淘宝网手机 编辑:程序博客网 时间:2024/05/17 09:45

八枚硬币: 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。

这里写图片描述

c代码

#include<stdio.h>#include<stdlib.h>#include<time.h>void getResult(int coins[]);int main(){    srand((unsigned)time(NULL)); //用时间做种,每次产生随机数不一样    int w_;    int coins[8] = { 0 };    printf("请输入八枚硬币的质量:");    for (int i = 0; i < 8; i++)    {        scanf_s("%d", &coins[i]);    }    for (int j = 0; j < 8; j++)    {        printf("%d%c", coins[j],' ');    }    getResult(coins);    system("pause");}void compl_coins(int coins[], int i, int j, int k){    if (coins[i] < coins[j])    {        if (coins[i] < coins[k])        {            printf("假币%d比较轻", i + 1);        }        else {            printf("假币%d比较重", j + 1);        }    }    else    {        if (coins[j] < coins[k])        {            printf("假币%d比较轻", j + 1);        }        else {            printf("假币%d比较重", i + 1);        }    }}void getResult(int coins[]){    if ((coins[0] + coins[1] + coins[2]) == (coins[3] + coins[4] + coins[5]))    {        /*if (coins[0] > coins[6])            printf("%d假币较轻",6);        else if (coins[0] < coins[6])            printf("%d假币较重", 6);        else if (coins[0]>coins[7])            printf("%d假币较轻", 7);        else if(coins[0]<coins[7])            printf("%d假币较重", 7);*/        compl_coins(coins, 6, 7, 0);    }    if ((coins[0] + coins[1] + coins[2]) < (coins[3] + coins[4] + coins[5]))    {        if (coins[0] + coins[3] == coins[1] + coins[4])        {            compl_coins(coins,2, 5, 0);        }        else if (coins[0] + coins[3] < coins[1] + coins[4])        {            compl_coins(coins, 0, 4, 2);        }        else        {            compl_coins(coins, 1, 3, 2);        }    }    if((coins[0] + coins[1] + coins[2]) > (coins[3] + coins[4] + coins[5]))    {        if (coins[0] + coins[3] == coins[1] + coins[4])        {            compl_coins(coins, 2, 5, 0);        }        else if (coins[0] + coins[3] > coins[1] + coins[4])        {            compl_coins(coins, 0, 4, 2);        }        else        {            compl_coins(coins, 1, 3, 2);        }    }}