精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>算法集锦--------梦入玄机>>一个典型的遍历问题。

主题:一个典型的遍历问题。
发信人: elliott_lao(天马)
整理人: wenbobo(2002-06-11 19:08:06), 站内信件
请回答下面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。 
答案:cdebeedcba
程序如下:
struct answer
 {
  int a[11];
  int b[6];
 } ans;

/*原型定义*/
void init_ans(); /*初始化ans*/
void cal_ans(); /*统计ans结果*/
int j1(); /*判断并加1*/

int d1(); /*判断条件1成立否*/
int d2();
int d3();
int d4();
int d5();
int d6();
int d7();
int d8();
int d9();

int main()
{
 int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;  /*判断数组*/
 init_ans();
 cal_ans();

 do
    {
     /*初始化判断数组*/
     t1 = 1;
     t2 = 1;
     t3 = 1;
     t4 = 1;
     t5 = 1;
     t6 = 1;
     t7 = 1;
     t8 = 1;
     t9 = 1;
     t10 = 1;

     t1 = d1();
     if (t1 == 0)
        {
         continue;
        }
     t2 = d2();
     if (t2 == 0)
        {
         continue;
        }
     t3 = d3();
     if (t3 == 0)
        {
         continue;
        }
     t4 = d4();
     if (t4 == 0)
        {
         continue;
        }
     t5 = d5();
     if (t5 == 0)
        {
         continue;
        }
     t6 = d6();
     if (t6 == 0)
        {
         continue;
        }
     t7 = d7();
     if (t7 == 0)
        {
         continue;
        }
     t8 = d8();
     if (t8 == 0)
        {
         continue;
        }
     t9 = d9();
     if (t9 == 0)
        {
         continue;
        }
     printf("结果是%d %d %d %d %d %d %d %d %d %d。\n",ans.a[1],ans.a[2],ans.a[3],ans.a[4],ans.a[5],ans.a[6],ans.a[7],ans.a[8],ans.a[9],ans.a[10]);
    }
 while(j1());


void init_ans()   /*初始化ans组*/
{
 ans.a[1] = 1;
 ans.a[2] = 1;
 ans.a[3] = 1;
 ans.a[3] = 1;
 ans.a[4] = 1;
 ans.a[5] = 1;
 ans.a[6] = 1;
 ans.a[7] = 1;
 ans.a[8] = 1;
 ans.a[9] = 1;
 ans.a[10] = 1;
}

void cal_ans()     /*统计答案结果*/
{
 int i;
 ans.b[1] = 0;
 ans.b[2] = 0;
 ans.b[3] = 0;
 ans.b[4] = 0;
 ans.b[5] = 0;

 for(i=1;i<=10;i++)
{
if(ans.a[i] == 1)
{
ans.b[1] = ans.b[1] + 1;
continue;
}
if(ans.a[i] == 2)
{
ans.b[2] = ans.b[2] + 1;
continue;
}
if(ans.a[i] == 3)
{
ans.b[3] = ans.b[3] + 1;
continue;
}
if(ans.a[i] == 4)
{
ans.b[4] = ans.b[4] + 1;
continue;
}
if(ans.a[i] == 5)
{
ans.b[5] = ans.b[5] + 1;
}
}
}

int j1()
{
if(ans.a[10] == 5 && ans.a[9] == 5 && ans.a[8] == 5 && ans.a[7] == 5 && ans.a[6] == 5 && ans.a[5] == 5 && ans.a[4] == 5 && ans.a[3] == 5 && ans.a[2] == 5 && ans.a[1] == 5)
{
return 0;
}
else
{
ans.a[1] = ans.a[1] + 1;
if(ans.a[1] == 6)
{
ans.a[1] = 1;
ans.a[2] = ans.a[2] + 1;
if(ans.a[2] == 6)
{
ans.a[2] = 1;
ans.a[3] = ans.a[3] + 1;
if(ans.a[3] == 6)
{
ans.a[3] = 1;
ans.a[4] = ans.a[4] + 1;
if(ans.a[4] == 6)
{
ans.a[4] = 1;
ans.a[5] = ans.a[5] + 1;
if(ans.a[5] == 6)
{
ans.a[5] = 1;
ans.a[6] = ans.a[6] + 1;
if(ans.a[6] == 6)
{
ans.a[6] = 1;
ans.a[7] = ans.a[7] + 1;
if(ans.a[7] == 6)
{
ans.a[7] = 1;
ans.a[8] = ans.a[8] + 1;
if(ans.a[8] == 6)
{
ans.a[8] = 1;
ans.a[9] = ans.a[9] + 1;
if(ans.a[9] == 6)
{
ans.a[9] = 1;
ans.a[10] = ans.a[10] + 1;
}
}
}
}
}
}
}
}
}
}
cal_ans();/*统计结果数*/
return 1;
}

int d1()
{
int n_b;
int i;

n_b = 11;
for(i=1;i<=10;i++)
{
if(ans.a[i] == 2)
{
n_b = i;
break;
}
}
if(ans.a[1] == 1 && n_b == 2)
{
return 1;
}
if(ans.a[1] == 2 && n_b == 3)
{
return 1;
}
if(ans.a[1] == 3 && n_b == 4)
{
return 1;
}
if(ans.a[1] == 4 && n_b == 5)
{
return 1;
}
if(ans.a[1] == 5 && n_b == 6)
{
return 1;
}
return 0;
}

int d2()
{
int n_b1;
int n_b2;
int i;
int j;

for(i=1;i<10;i++)
{
n_b1 = 11;
n_b2 = 11;
for(j=i+1;j<10;j++)
{
if(ans.a[j] == ans.a[j+1])
{
n_b2 = j;
break;
}
}
if(ans.a[i] == ans.a[i+1] && n_b2 == 11)
{
n_b1 = i;
break;
}
}
if(ans.a[2] == 1 && n_b1 == 2)
{
return 1;
}
if(ans.a[2] == 2 && n_b1 == 3)
{
return 1;
}
if(ans.a[2] == 3 && n_b1 == 4)
{
return 1;
}
if(ans.a[2] == 4 && n_b1 == 5)
{
return 1;
}
if(ans.a[2] == 5 && n_b1 == 6)
{
return 1;
}
return 0;
}

int d3()
{
if(ans.a[3] == 1 && ans.a[3] == ans.a[1])
{
return 1;
}
if(ans.a[3] == 2 && ans.a[3] == ans.a[2])
{
return 1;
}
if(ans.a[3] == 3 && ans.a[3] == ans.a[4])
{
return 1;
}
if(ans.a[3] == 4 && ans.a[3] == ans.a[7])
{
return 1;
}
if(ans.a[3] == 5 && ans.a[3] == ans.a[6])
{
return 1;
}
return 0;
}

int d4()
{
if(ans.a[4] == 1 && ans.b[1] == 0)
{
return 1;
}
if(ans.a[4] == 2 && ans.b[1] == 1)
{
return 1;
}
if(ans.a[4] == 3 && ans.b[1] == 2)
{
return 1;
}
if(ans.a[4] == 4 && ans.b[1] == 3)
{
return 1;
}
if(ans.a[4] == 5 && ans.b[1] == 4)
{
return 1;
}
return 0;
}

int d5()
{
if(ans.a[5] == 1 && ans.a[5] == ans.a[10])
{
return 1;
}
if(ans.a[5] == 2 && ans.a[5] == ans.a[9])
{
return 1;
}
if(ans.a[5] == 3 && ans.a[5] == ans.a[8])
{
return 1;
}
if(ans.a[5] == 4 && ans.a[5] == ans.a[7])
{
return 1;
}
if(ans.a[5] == 5 && ans.a[5] == ans.a[6])
{
return 1;
}
return 0;
}

int d6()
{
if(ans.a[6] == 1 && ans.b[1] == ans.b[2])
{
return 1;
}
if(ans.a[6] == 2 && ans.b[1] == ans.b[3])
{
return 1;
}
if(ans.a[6] == 3 && ans.b[1] == ans.b[4])
{
return 1;
}
if(ans.a[6] == 4 && ans.b[1] == ans.b[5])
{
return 1;
}
if(ans.a[6] == 5 && ans.b[1] != ans.b[2] && ans.b[1] != ans.b[3] && ans.b[1] != ans.b[4] && ans.b[1] != ans.b[5])
{
return 1;
}
return 0;
}

int d7()
{
if(ans.a[7] == 1 && (ans.a[8] - ans.a[7] == 4))
{
return 1;
}
if(ans.a[7] == 2 && (ans.a[8] - ans.a[7] == 3))
{
return 1;
}
if(ans.a[7] == 3 && (ans.a[8] - ans.a[7] == 2 || ans.a[7] - ans.a[8] == 2))
{
return 1;
}
if(ans.a[7] == 4 && (ans.a[8] - ans.a[7] == 1 || ans.a[7] - ans.a[8] == 1))
{
return 1;
}
if(ans.a[7] == 5 && (ans.a[8] - ans.a[7] == 0))
{
return 1;
}
return 0;
}

int d8()
{
if(ans.a[8] == 1 && ans.b[1] + ans.b[5] == 2)
{
return 1;
}
if(ans.a[8] == 2 && ans.b[1] + ans.b[5] == 3)
{
return 1;
}
if(ans.a[8] == 3 && ans.b[1] + ans.b[5] == 4)
{
return 1;
}
if(ans.a[8] == 4 && ans.b[1] + ans.b[5] == 5)
{
return 1;
}
if(ans.a[8] == 5 && ans.b[1] + ans.b[5] == 6)
{
return 1;
}
return 0;
}

int d9()
{
if(ans.a[9] == 1 && (ans.b[2] + ans.b[3] + ans.b[4] == 5 || ans.b[2] + ans.b[3] + ans.b[4] == 7))
{
return 1;
}
if(ans.a[9] == 2 && (ans.b[2] + ans.b[3] + ans.b[4] == 6))
{
return 1;
}
if(ans.a[9] == 3 && (ans.b[2] + ans.b[3] + ans.b[4] == 4))
{
return 1;
}
if(ans.a[9] == 4 && (ans.b[2] + ans.b[3] + ans.b[4] == 8))
{
return 1;
}
if(ans.a[9] == 5 && (ans.b[2] + ans.b[3] + ans.b[4] == 5))
{
return 1;
}
return 0;
}



----
-世上是先有鸡,还是先有蛋- Elliott lao

[关闭][返回]