标题:来关心关心女老师。
只看楼主
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
结帖率:100%
已结贴  问题点数:20 回复次数:7 
来关心关心女老师。
五位女教师:
谷老师不是二年级老师
爱欣是美术老师
王老师是音乐老师
晓宁不是数学老师
李老师不是四年级老师
瑞英教一年级学生
芸菲是语文老师
刘老师是英语老师
芸菲不教三年级
高老师教五年级
莹莹教四年级

问:每一位老师全名及教哪一年级哪一门课
挺有意思的,供大家练练手。
搜索更多相关主题的帖子: 音乐 美术老师 英语老师 教师 数学 
2017-05-28 21:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:14 
结果太多了
程序代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main( void )
{
    string family_names[] = { "", "", "", "", "" };
    string given_names[] = { "瑞英", "芸菲", "莹莹", "爱欣", "晓宁" };
    string grade_names[] = { "一年级", "二年级", "三年级", "四年级", "五年级" };
    string subject_names[] = { "语文", "数学", "英语", "美术", "音乐" };

    auto grade_with_familyname = [&]( const char* family_name ) { return grade_names[distance(begin(family_names),find(begin(family_names),end(family_names),family_name))]; };
    auto grade_with_givenname = [&]( const char* given_name ) { return grade_names[distance(begin(given_names),find(begin(given_names),end(given_names),given_name))]; };
    auto subject_with_familyname = [&]( const char* family_name ) { return subject_names[distance(begin(family_names),find(begin(family_names),end(family_names),family_name))]; };
    auto subject_with_givenname = [&]( const char* given_name ) { return subject_names[distance(begin(given_names),find(begin(given_names),end(given_names),given_name))]; };

    sort( begin(given_names), end(given_names) );
    do
    {
        sort( begin(grade_names), end(grade_names) );
        do
        {
            sort( begin(subject_names), end(subject_names) );
            do
            {
                if( grade_with_familyname("") != "二年级"
                    && subject_with_givenname("爱欣") == "美术"
                    && subject_with_familyname("") == "音乐"
                    && subject_with_givenname("晓宁") != "数学"
                    && grade_with_familyname("") != "四年级"
                    && grade_with_givenname("瑞英") == "一年级"
                    && subject_with_givenname("芸菲") == "语文"
                    && subject_with_familyname("") == "英语"
                    && grade_with_givenname("芸菲") != "三年级"
                    && grade_with_familyname("") == "五年级"
                    && grade_with_givenname("莹莹") == "四年级" )
                {
                    cout << family_names[0] << given_names[0] << grade_names[0] << subject_names[0] << '\n'
                         << family_names[1] << given_names[1] << grade_names[1] << subject_names[1] << '\n'
                         << family_names[2] << given_names[2] << grade_names[2] << subject_names[2] << '\n'
                         << family_names[3] << given_names[3] << grade_names[3] << subject_names[3] << '\n'
                         << family_names[4] << given_names[4] << grade_names[4] << subject_names[4] << '\n' << endl;
                }
            }
            while( next_permutation(begin(subject_names),end(subject_names)) );
        }
        while( next_permutation(begin(grade_names),end(grade_names)) );
    }
    while( next_permutation(begin(given_names),end(given_names)) );
}

输出
李爱欣二年级美术
谷瑞英一年级数学
高芸菲五年级语文
王晓宁三年级音乐
刘莹莹四年级英语

李爱欣三年级美术
谷瑞英一年级数学
高芸菲五年级语文
王晓宁二年级音乐
刘莹莹四年级英语

李爱欣二年级美术
谷瑞英一年级数学
高芸菲五年级语文
王莹莹四年级音乐
刘晓宁三年级英语

李爱欣三年级美术
谷瑞英一年级数学
高芸菲五年级语文
王莹莹四年级音乐
刘晓宁二年级英语

李爱欣二年级美术
谷莹莹四年级数学
高芸菲五年级语文
王瑞英一年级音乐
刘晓宁三年级英语

李爱欣三年级美术
谷莹莹四年级数学
高芸菲五年级语文
王瑞英一年级音乐
刘晓宁二年级英语

李爱欣二年级美术
谷莹莹四年级数学
高芸菲五年级语文
王晓宁三年级音乐
刘瑞英一年级英语

李爱欣三年级美术
谷莹莹四年级数学
高芸菲五年级语文
王晓宁二年级音乐
刘瑞英一年级英语

李瑞英一年级数学
谷爱欣三年级美术
高芸菲五年级语文
王晓宁二年级音乐
刘莹莹四年级英语

李瑞英一年级数学
谷爱欣三年级美术
高芸菲五年级语文
王莹莹四年级音乐
刘晓宁二年级英语

李芸菲二年级语文
谷瑞英一年级数学
高爱欣五年级美术
王晓宁三年级音乐
刘莹莹四年级英语

李芸菲二年级语文
谷瑞英一年级数学
高爱欣五年级美术
王莹莹四年级音乐
刘晓宁三年级英语

李芸菲二年级语文
谷莹莹四年级数学
高爱欣五年级美术
王瑞英一年级音乐
刘晓宁三年级英语

李芸菲二年级语文
谷莹莹四年级数学
高爱欣五年级美术
王晓宁三年级音乐
刘瑞英一年级英语

2017-05-31 12:41
malong656
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2017-5-30
得分:2 
问下大大,include前3行<>这里为什么要加这几个英文。我刚刚学习的,突然发现看不懂了
2017-05-31 23:00
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:2 
厉害呀,各位大佬

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-31 23:25
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 3楼 malong656
头文件呀

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-31 23:26
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
回复 2楼 rjsp
多谢关注。我写的时候只找了一种解法,真要完全遍历的话符合条件的解法是很多的。再次感觉到了algorithm的强大福利
2017-06-01 13:55
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:0 
#include<stdio.h>
#include<algorithm>
using namespace std;

short surname[5]={0,1,2,3,4};//从0~4分别为谷,王,李,刘,高
short name[5]={0,1,2,3,4};//从0~4分别为爱欣,晓宁,瑞英,芸菲,莹莹
short crs[5]={0,1,2,3,4};//从0~4分别为美术,音乐,数学,语文,英语
short grade[5]={0,1,2,3,4};//从0~4分别为一到五年级
bool JudgeCourse()  //符合返回真
{
    for(short i=0;i<5;i++)
    {
        if((name[i]==0)!=(crs[i]==0)) return false;   //爱欣是美术老师
        if((surname[i]==1)!=(crs[i]==1)) return false;//王老师是音乐老师
        if(name[i]==1&&crs[i]==2) return false;       //晓宁不是数学老师
        if((name[i]==3)!=(crs[i]==3)) return false;   //芸菲是语文老师
        if((surname[i]==3)!=(crs[i]==4)) return false;//刘老师是英语老师
    }
    return true;
}
bool JudgeGrade()  //符合返回真
{
    for(short i=0;i<5;i++)
    {
        if(surname[i]==0&&grade[i]==1) return false;  //谷老师不是二年级老师
        if(surname[i]==2&&grade[i]==3) return false;  //李老师不是四年级老师
        if((name[i]==2)!=(grade[i]==0)) return false;  //瑞英教一年级学生
        if(name[i]==3&&grade[i]==2) return false;  //芸菲不教三年级
        if((surname[i]==4)!=(grade[i]==4)) return false;//高老师教五年级
        if((name[i]==4)!=(grade[i]==3)) return false;//莹莹教四年级
    }
    return true;
}
int main()
{
    bool success=false;
    do
    {
        for(short icrs=0;icrs<5;icrs++) crs[icrs]=icrs;
        do
        {
            if(!JudgeCourse()) continue;
            for(short igrade=0;igrade<5;igrade++) crs[igrade]=igrade;
            do
            {
                if(JudgeGrade())success=true;
            }while(!success&&next_permutation(grade,grade+5));
        }while(!success&&next_permutation(crs,crs+5));
    }while(!success&&next_permutation(name,name+5));
    for(short i=0;i<5;i++)
    {
        switch(surname[i])
        {
        case 0:printf("%s","谷");break;
        case 1:printf("%s","王");break;
        case 2:printf("%s","李");break;
        case 3:printf("%s","刘");break;
        default:printf("%s","高");break;
        }
        switch(name[i])
        {
        case 0:printf("%s","爱欣老师教");break;
        case 1:printf("%s","晓宁老师教");break;
        case 2:printf("%s","瑞英老师教");break;
        case 3:printf("%s","芸菲老师教");break;
        default:printf("%s","莹莹老师教");break;
        }
        switch(grade[i])
        {
        case 0:printf("%s","一年级");break;
        case 1:printf("%s","二年级");break;
        case 2:printf("%s","三年级");break;
        case 3:printf("%s","四年级");break;
        default:printf("%s","五年级");break;
        }
        switch(crs[i])
        {
        case 0:printf("%s","美术\n");break;
        case 1:printf("%s","音乐\n");break;
        case 2:printf("%s","数学\n");break;
        case 3:printf("%s","语文\n");break;
        default:printf("%s","英语\n");break;
        }
    }
    return 0;
}
2017-06-01 13:55
随风晨爱
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2017-6-1
得分:2 
好牛逼啊。。。
2017-06-01 17:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477449-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.396366 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved