用程序解逻辑推理题

9 篇文章 0 订阅
5 篇文章 0 订阅

请回答下面10个问题:
1、第一个答案是b的问题是哪一个?
(a)2;(b) 3;(c)4;(d)5;(e)6
2、唯一的连续两个具有相同答案的问题是:
(a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;
3、本问题答案和哪一个问题的答案相同?
(a)1;(b)2;(c)4;(d)7;(e)6
4、答案是a的问题的个数是:
(a)0;(b)1;(c)2;(d)3;(e)4
5、本问题答案和哪一个问题的答案相同?
(a)10;(b)9;(c)8;(d)7;(e)6
6、答案是a的问题的个数和答案是什么的问题的个数相同?
(a)b;(b)c;(c)d;(d)e;(e)以上都不是
7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母)
8、答案是元音字母的问题的个数是:
(a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母)
9、答案是辅音字母的问题的个数是:
(a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数
10、本问题的答案是:
(a)a;(b)b;(c)c;(d)d;(e)e。

基本思路:
穷举法,把所有答案找出,逐个检验

java实现


public class TenQusetion {
    static char[]answer = new char[10];
    static{
        answer[0]='a';answer[1]='a';answer[2]='a';answer[3]='a';answer[4]='a';
        answer[5]='a';answer[6]='a';answer[7]='a';answer[8]='a';answer[9]='a';
    }

    public static void main(String[] args) {
        while(nextAnswer()){
            if(check()){
//              System.out.println(answer);
                OutArray.outArray(answer);//这个函数是用来输出的,写在另一个文件里面,就不贴出来了
            }
        }
    }

    static boolean nextAnswer(){
        addNum(9);
        if(     answer[0]=='e' &&   answer[1]=='e' &&   answer[2]=='e' &&
                answer[3]=='e' &&   answer[4]=='e' &&   answer[5]=='e' &&
                answer[6]=='e' &&   answer[7]=='e' &&   answer[8]=='e' &&
                answer[9]=='e' 
                ){
            return false;
        }else{
            return true;
        }
    }

    private static void addNum(int i){
        if(i>=0){
            answer[i]++;
            if(answer[i]>'e'){
                answer[i] = 'a';
                addNum(i-1);
            }
        }
    }

    static boolean check(){
        //1.
        int i1=0;
        while(i1<10 && answer[i1++] != 'b'){}
        if(     (i1==1+1 && answer[0]=='a')||
                (i1==2+1 && answer[0]=='b')|| 
                (i1==3+1 && answer[0]=='c')|| 
                (i1==4+1 && answer[0]=='d')||
                (i1==5+1 && answer[0]=='e')){
            }
        else {
            return false;
        }

        //2.
        int i2,temp2=0,save2=-1;
        for(i2=0;i2<9;i2++){
            if(answer[i2] == answer[i2+1]){
                temp2++;
                save2 = i2;
            }
        }
        if(temp2!=1){
            return false;
        }else if(   (save2==1 && answer[1]=='a')||
                    (save2==2 && answer[1]=='b')|| 
                    (save2==3 && answer[1]=='c')|| 
                    (save2==4 && answer[1]=='d')||
                    (save2==5 && answer[1]=='e')){}
        else{
            return false;
        }

        //3.
        if(     (answer[2]==answer[0]) && answer[2]=='a'){}
        else if((answer[2]==answer[1]) && answer[2]=='b'){}
        else if((answer[2]==answer[3]) && answer[2]=='c'){}
        else if((answer[2]==answer[6]) && answer[2]=='d'){} 
        else if((answer[2]==answer[5]) && answer[2]=='e'){}
        else{
            return false;
        }

        //4.
        int count4=0;
        for(char x:answer){
            if(x == 'a') count4++;
        }
        if( (count4==0&& answer[3]=='a')||
            (count4==1&& answer[3]=='b')||
            (count4==2&& answer[3]=='c')||
            (count4==3&& answer[3]=='d')||
            (count4==4&& answer[3]=='e')){}
        else{
            return false;
        }

        //5.
        if(     (answer[4]==answer[9]) && answer[4]=='a'){}
        else if((answer[4]==answer[8]) && answer[4]=='b'){}
        else if((answer[4]==answer[7]) && answer[4]=='c'){}
        else if((answer[4]==answer[6]) && answer[4]=='d'){} 
        else if((answer[4]==answer[5]) && answer[4]=='e'){}
        else{
            return false;
        }

        //6.
        int countA6=0,countB6=0,countC6=0,countD6=0,countE6=0;
        for(char x:answer){
            if(x == 'a') countA6++;
            else if(x=='b')countB6++;
            else if(x=='c')countC6++;
            else if(x=='d')countD6++;
            else if(x=='e')countE6++;
        }
        if(countA6==countB6){
            if(answer[5]!='a') return false; 
        }else if(countA6==countC6){
            if(answer[5]!='b') return false; 
        }else if(countA6==countD6){
            if(answer[5]!='c') return false; 
        }else if(countA6==countE6){
            if(answer[5]!='d') return false; 
        }else{
            if(answer[5]!='e') return false;
        }

        //7.
        int i7 = Math.abs(answer[6]-answer[7]);
        if( (i7==4 && answer[6]=='a')||
            (i7==3 && answer[6]=='b')||
            (i7==2 && answer[6]=='c')||
            (i7==1 && answer[6]=='d')||
            (i7==0 && answer[6]=='e')){}
        else{
            return false;
        }

        //8.
        int count8=0;
        for(char x:answer){
            if(x=='a' || x=='e') count8++;
        }
        if( (count8==2&& answer[7]=='a')||
            (count8==3&& answer[7]=='b')||
            (count8==4&& answer[7]=='c')||
            (count8==5&& answer[7]=='d')||
            (count8==6&& answer[7]=='e')){}
        else{
            return false;
        }

        //9.
        int count9 = 10-count8;
        if((count9==5 || count9 ==10) && answer[8]=='e'){}
        else if((count9==8 || count9==1)&& answer[8]=='d'){}
        else if((count9==9 || count9==4 || count9==1) && answer[8]=='c'){}
        else if((count9==6 || count9==2 || count9==1) && answer[8]=='b'){}
        else if((count9==7 || count9==5 || count9==3 || 
                count9==2 || count9==1)&&answer[8]=='a'){}
        else{
            return false;
        }

        return true;
    }
}

C语言实现


#include <stdio.h>
int check();
int nextAnswer();
void addNum();
void outArray();

char answer[10] = {'a','a','a','a','a',
                    'a','a','a','a','a'};
const int TRUE = 1;
const int FALSE = 0;

void main(){

    while(nextAnswer()){
        if(check()){
//              System.out.println(answer);
            outArray();
        }
    }
}

void outArray(){
    int i=0;
    while(i<10)
        printf("%c,",answer[i++]);
    printf("\n");
}

int nextAnswer(){
    addNum(9);
        if(     answer[0]=='e' &&   answer[1]=='e' &&   answer[2]=='e' &&
                answer[3]=='e' &&   answer[4]=='e' &&   answer[5]=='e' &&
                answer[6]=='e' &&   answer[7]=='e' &&   answer[8]=='e' &&
                answer[9]=='e' 
                ){
            return FALSE;
        }else{
            return TRUE;
        }
}

void addNum(int i){
    if(i>=0){
        answer[i]++;
        if(answer[i]>'e'){
            answer[i] = 'a';
            addNum(i-1);
        }
    }
}

int check(){
    //1.
        int i1=0;
        while(i1<10 && answer[i1++] != 'b'){}
        if(     (i1==1+1 && answer[0]=='a')||
                (i1==2+1 && answer[0]=='b')|| 
                (i1==3+1 && answer[0]=='c')|| 
                (i1==4+1 && answer[0]=='d')||
                (i1==5+1 && answer[0]=='e')){
            }
        else {
            return FALSE;
        }

        //2.
        int i2,temp2=0,save2=-1;
        for(i2=0;i2<9;i2++){
            if(answer[i2] == answer[i2+1]){
                temp2++;
                save2 = i2;
            }
        }
        if(temp2!=1){
            return FALSE;
        }else if(   (save2==1 && answer[1]=='a')||
                    (save2==2 && answer[1]=='b')|| 
                    (save2==3 && answer[1]=='c')|| 
                    (save2==4 && answer[1]=='d')||
                    (save2==5 && answer[1]=='e')){}
        else{
            return FALSE;
        }

        //3.
        if(     (answer[2]==answer[0]) && answer[2]=='a'){}
        else if((answer[2]==answer[1]) && answer[2]=='b'){}
        else if((answer[2]==answer[3]) && answer[2]=='c'){}
        else if((answer[2]==answer[6]) && answer[2]=='d'){} 
        else if((answer[2]==answer[5]) && answer[2]=='e'){}
        else{
            return FALSE;
        }

        //4.
        int count4=0;
        int i4;
        for(i4=0;i4<10;i4++){
            if(answer[i4] == 'a') count4++;
        }
        if( (count4==0&& answer[3]=='a')||
            (count4==1&& answer[3]=='b')||
            (count4==2&& answer[3]=='c')||
            (count4==3&& answer[3]=='d')||
            (count4==4&& answer[3]=='e')){}
        else{
            return FALSE;
        }

        //5.
        if(     (answer[4]==answer[9]) && answer[4]=='a'){}
        else if((answer[4]==answer[8]) && answer[4]=='b'){}
        else if((answer[4]==answer[7]) && answer[4]=='c'){}
        else if((answer[4]==answer[6]) && answer[4]=='d'){} 
        else if((answer[4]==answer[5]) && answer[4]=='e'){}
        else{
            return FALSE;
        }

        //6.
        int countA6=0,countB6=0,countC6=0,countD6=0,countE6=0;
        int i6;
        for(i6=0;i6<10;i6++){
            if(answer[i6] == 'a') countA6++;
            else if(answer[i6]=='b')countB6++;
            else if(answer[i6]=='c')countC6++;
            else if(answer[i6]=='d')countD6++;
            else if(answer[i6]=='e')countE6++;
        }
        if(countA6==countB6){
            if(answer[5]!='a') return FALSE; 
        }else if(countA6==countC6){
            if(answer[5]!='b') return FALSE; 
        }else if(countA6==countD6){
            if(answer[5]!='c') return FALSE; 
        }else if(countA6==countE6){
            if(answer[5]!='d') return FALSE; 
        }else{
            if(answer[5]!='e') return FALSE;
        }

        //7.
        int i7 = answer[6]-answer[7]<0? answer[7]-answer[6]:answer[6]-answer[7];
        if( (i7==4 && answer[6]=='a')||
            (i7==3 && answer[6]=='b')||
            (i7==2 && answer[6]=='c')||
            (i7==1 && answer[6]=='d')||
            (i7==0 && answer[6]=='e')){}
        else{
            return FALSE;
        }

        //8.
        int count8=0;
        int i8;
        for(i8=0;i8<10;i8++){
            if(answer[i8]=='a' || answer[i8]=='e') count8++;
        }
        if( (count8==2&& answer[7]=='a')||
            (count8==3&& answer[7]=='b')||
            (count8==4&& answer[7]=='c')||
            (count8==5&& answer[7]=='d')||
            (count8==6&& answer[7]=='e')){}
        else{
            return FALSE;
        }

        //9.
        int count9 = 10-count8;
        if((count9==5 || count9 ==10) && answer[8]=='e'){}
        else if((count9==8 || count9==1)&& answer[8]=='d'){}
        else if((count9==9 || count9==4 || count9==1) && answer[8]=='c'){}
        else if((count9==6 || count9==2 || count9==1) && answer[8]=='b'){}
        else if((count9==7 || count9==5 || count9==3 || 
                count9==2 || count9==1)&&answer[8]=='a'){}
        else{
            return FALSE;
        }

        return TRUE;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值