国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C趣味程序百例(15)

2019-11-17 05:40:36
字體:
供稿:網(wǎng)友
48.新娘和新郞
49.委派任務(wù)
50.誰在說謊



48.新娘和新郞
    三對情侶參加婚禮,三個(gè)新郞為A、B、C,三個(gè)新娘為X、Y、Z。有人不知道誰和誰結(jié)婚,于是詢問了六位新人中的三位,但聽到的回答是這樣的:A說他將和X結(jié)婚;X說她的未婚夫是C;C說他將和Z結(jié)婚。這人聽后知道他們在開玩笑,全是假話。請編程找出誰將和誰結(jié)婚。
*問題分析與算法設(shè)計(jì)
    將A、B、C三人用1,2,3表示,將X和A結(jié)婚表示為“X=1”,將Y不與A結(jié)婚表示為“Y!=1”。按照題目中的敘述可以寫出表達(dá)式:
        x!=1        A不與X結(jié)婚
        x!=3        X的未婚夫不是C
        z!=3        C不與Z結(jié)婚
    題意還隱含著X、Y、Z三個(gè)新娘不能結(jié)為配偶,則有:
            x!=y且x!=z且y!=z
    窮舉以上所有可能的情況,代入上述表達(dá)式中進(jìn)行推理運(yùn)算,若假設(shè)的情況使上述表達(dá)式的結(jié)果均為真,則假設(shè)情況就是正確的結(jié)果。
*程序與程序注釋
#include<stdio.h>
void main()
{
    int x,y,z;
    for(x=1;x<=3;x++)          /*窮舉x的全部可能配偶*/
        for(y=1;y<=3;y++)      /*窮舉y的全部可能配偶*/
            for(z=1;z<=3;z++)    /*窮舉z的全部可能配偶*/
                if(x!=1&&x!=3&&z!=3&&x!=y&&x!=z&&y!=z)  /*判定配偶是否滿足題意*/
                {
                                        printf("Y will marry to %c./n",'A'+y-1);
                    printf("Z will marry to %c./n",'A'+z-1);
                }
}
*運(yùn)行結(jié)果
        X will marry to B.        (X與B結(jié)婚)
        Y will marry to C.        (Y與C結(jié)婚)
        Z will marry to A.        (Z與A結(jié)婚)49.委派任務(wù)
    某偵察隊(duì)接到一項(xiàng)緊急任務(wù),要求在A、B、C、D、E、F六個(gè)隊(duì)員中盡可能多地挑若干人,但有以下限制條件:
        1)A和B兩人中至少去一人;
        2)A和D不能一起去;
        3)A、E和F三人中要派兩人去;
        4)B和C都去或都不去;
        5)C和D兩人中去一個(gè);
        6)若D不去,則E也不去。
    問應(yīng)當(dāng)讓哪幾個(gè)人去?
*問題分析與算法設(shè)計(jì) 
    用A、B、C、D、E、F六個(gè)變量表示六個(gè)人是否去執(zhí)行任務(wù)的狀態(tài),變量的值為1,則表示該人去;變量的值為0,則表示該人不參加執(zhí)行任務(wù),根據(jù)題意可寫出表達(dá)式:
    a+b>1                A和B兩人中至少去一人;
    a+d!=2               A和D不能一起去;
    a+e+f==2             A、E、F三人中要派兩人去;
    b+c==0或b+c==2       B和C都去或都不去;
    c+d==1               C和D兩人中去一個(gè);
    d+e==0或d==1         若D不去,則E也不去(都不去;或D去E隨便)。
    上述各表達(dá)式之間的關(guān)系為“與”關(guān)系。窮舉每個(gè)人去或不去的各種可能情況,代入上述表達(dá)式中進(jìn)行推理運(yùn)算,使上述表達(dá)式均為“真”的情況就是正確的結(jié)果。
*程序與程序注釋
#include<stdio.h>
void main()
{
    int a,b,c,d,e,f;
    for(a=1;a>=0;a--)           /*窮舉每個(gè)人是否去的所有情況*/
        for(b=1;b>=0;b--)       /*1:去  0:不去*/
            for(c=1;c>=0;c--)
                for(d=1;d>=0;d--)
                    for(e=1;e>=0;e--)
                        for(f=1;f>=0;f--)
                            if(a+b>=1&&a+d!=2&&a+e+f==2
                                &&(b+c==0b+c==2)&&c+d==1
                                &&(d+e==0d==1))
                            {
                                printf("A will%s be assigned. /n",a?"":"not");
                                printf("B will%s be assigned. /n",b?"":"not");
                                printf("C will%s be assigned. /n",c?"":"not");
                                printf("D will%s be assigned. /n",d?"":"not");
                                printf("E will%s be assigned. /n",e?"":"not");
                                printf("F will%s be assigned. /n",f?"":"not");
             &


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泗洪县| 安宁市| 峨眉山市| 寻乌县| 旅游| 南溪县| 华阴市| 中牟县| 乐山市| 高邮市| 东阿县| 梁山县| 都昌县| 新野县| 明溪县| 南华县| 贵州省| 专栏| 集贤县| 辽中县| 富顺县| 柞水县| 白河县| 清镇市| 嵩明县| 蒲江县| 苍山县| 武穴市| 乐昌市| 延津县| 唐河县| 江阴市| 台安县| 麻江县| 永康市| 秦安县| 大丰市| 广德县| 文登市| 宿迁市| 乌拉特前旗|