查看: 850|回复: 11

[逻辑推理] 五束鲜花

转载  已解决  简洁模式
发表于 2019-7-9 11:37:12 | 2019-7-9 11:44编辑 | 发自安卓客户端
有红色、白色、蓝色、粉色花各10朵,一共40朵,把它们扎成五束送给5个人,每一束花中不同颜色花朵的数量不全相同,并且每术花中每种颜色的花至少有一朵,已知五束花为:
A:蓝色的花比其余三种颜色的花加起来还要多
B:粉色的花比其余任何一种颜色的花都少
C:蓝花和白花之和与粉花和红花的和相等
D:白花是红花的两倍
E:红花和粉花一样多
请问5束花中4种颜色的花各有几朵??
登录帐号可查看完整回帖内容

此回答在 2019-7-10 14:12 被选定为谜题答案,获得破案经验 1

发表于 2019-7-9 11:41:46 | 发自安卓客户端
啊这里有错别字
补充:蓝白红粉
5111
2321
1331
1214
1133
登录帐号可查看完整回帖内容
发表于 2019-7-9 11:52:51 | 2019-7-9 11:57编辑 | 发自安卓客户端
红   白   蓝   粉
1. 1       1     4    1
2. 2     2      2    1
3.1      2       1     2
4.  1     2      1    1
5.  5     3      2     5
发表于 2019-7-9 14:54:42 | 发自安卓客户端
兄弟啊,你这题解法好多,我编个程序解都至少有了70种,每种都符合要求......
比如:(红白蓝粉)
1141   1141    1141    1141   1141   1141
2521  2521   2521   2331   2331   2331
2121  2211    1122   1212   2211   2312
1213   1213    1211    1211   1213   1212
4114   4114   5115    5215  4214  4114
代码如下:
//#include "pch.h"#include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;bool check(int flowers[5][4]) {        int i = 0, a = 0;        for (; i < 5; ++i)                for (; a < 4; ++a)                        if (flowers[i][a] != 9)return 1;        return 0;}void jinwei(int a[4], int i) {        if (i == 0 && a[i] > 9)return;        if (a[i] > 9) {                 ++a[i - 1];         a[i] = 1;        }        if (a[i - 1] > 9)jinwei(a, i - 1);}void put(int flowers[5][4]) {        int i = 0, a = 0;        static int num = 1;        cout << num << ":" << endl;        cout << "红  白  蓝  粉" << endl;        for (i=0; i < 5; ++i) {                for (a=0; a < 4; ++a)                        cout << flowers[i][a] << "  ";                cout << endl;        }        ++num;        cout << endl;}int main(void){        int shu = 0;        int flowers[5][4] = { 1,1,1,1,//红白蓝粉                                                 1,1,1,1,//  0 1  2 3                                                1,1,1,1,                                                1,1,1,1,                                                1,1,1,1, };        while (check(flowers)) {                for (; flowers[0][0] < 10; ++flowers[0][3]) {                        if (flowers[0][3] > 9)jinwei(flowers[0], 3);                        if(flowers[0][2]>flowers[0][0]+ flowers[0][1] + flowers[0][3]){                                for (; flowers[1][0] < 10; ++flowers[1][3]) {                                        if (flowers[1][3] > 9)jinwei(flowers[1], 3);                                        if (flowers[1][3] < flowers[1][0] &&                                                flowers[1][3] < flowers[1][1] &&                                                flowers[1][3] < flowers[1][2]) {                                                for (; flowers[2][0] < 10; ++flowers[2][3]) {                                                        if (flowers[2][3] > 9)jinwei(flowers[2], 3);                                                        if ((flowers[2][1] + flowers[2][2] )== (flowers[2][0] + flowers[2][3])) {                                                                for (; flowers[3][0] < 10; ++flowers[3][3]) {                                                                        if (flowers[3][3] > 9)jinwei(flowers[3], 3);                                                                        if (flowers[3][1] == (flowers[3][0] * 2)) {                                                                                for (; flowers[4][0] < 10; ++flowers[4][3]) {                                                                                        if (flowers[4][3] > 9)jinwei(flowers[4], 3);                                                                                        if (flowers[4][3] == flowers[4][0]) {                                                                                                shu = 0;                                                                                                for (int m = 0; m < 4; ++m) {                                                                                                        for (int n = 0; n < 5; ++n)                                                                                                                shu += flowers[n][m];                                                                                                        if (shu != 10)break;                                                                                                        else shu = 0;                                                                                                        if (m == 3) {                                                                                                                for (int c = 0; c < 5; ++c) {                                                                                                                        if (flowers[c][0] == flowers[c][1] &&                                                                                                                                flowers[c][1] == flowers[c][2] &&                                                                                                                                flowers[c][2] == flowers[c][3]                                                                                                                                ) {                                                                                                                                shu = 1; break;                                                                                                                        }                                                                                                                }                                                                                                                if (shu != 1)                                                                                                                        put(flowers);                                                                                                        }                                                                                                }                                                                                        }                                                                                }                                                                                flowers[4][0] = flowers[4][1] = flowers[4][2] = flowers[4][3] = 1;                                                                        }                                                                }                                                                flowers[3][0] = flowers[3][1] = flowers[3][2] = flowers[3][3] = 1;                                                        }                                                }                                                flowers[2][0] = flowers[2][1] = flowers[2][2] = flowers[2][3] = 1;                                        }                                }//下一层循环                                flowers[1][0] = flowers[1][1] = flowers[1][2] = flowers[1][3] = 1;                        }                }        }        return 0;}
登录帐号可查看完整回帖内容
尚未登录
您需要登录后才可以回帖 登录 | 加入学院