能力值:
( LV2,RANK:10 )
2 楼
你的第一题字母对应的是ascall码吗?想讨论的话,加这个qq931614367吧。我不是个高手,事先说明》
能力值:
( LV2,RANK:10 )
3 楼
不是那个编码,就是求出数字
能力值:
( LV2,RANK:10 )
4 楼
1.FG可以看出来,其它穷举应该速度也不慢。
2ABCDE从00000到11111一个个试,找到满足条件的。
能力值:
( LV2,RANK:10 )
5 楼
a,b,c,d,e分别从00000到11111?
能力值:
( LV2,RANK:10 )
6 楼
这个还真是不明白啊 我学习下啦
能力值:
( LV2,RANK:10 )
7 楼
#include <stdio.h>
#include <stdlib.h>
#define A 16 // 10000b
#define B 8 // 01000b
#define C 4 // 00100b
#define D 2 // 00010b
#define E 1 // 00001b
int show(int x)
{
if (x == 0)
return 0;
printf("Player: ");
if (x & A)
printf("A ");
if (x & B)
printf("B ");
if (x & C)
printf("C ");
if (x & D)
printf("D ");
if (x & E)
printf("E ");
printf("\n");
return 1;
}
int main()
{
int i;
int array[32];
for (i = 0; i < 32; i++) {
array[i] = 1;
if ((i&A)&&!(i&B))
array[i] = 0;
if ((i&B)&&(i&C))
array[i] = 0;
if ((i&C)&&!(i&D))
array[i] = 0;
if (!(i&C)&&(i&D))
array[i] = 0;
if (!(i&D)&&!(i&E))
array[i] = 0;
if ((i&E)&&!(i&A))
array[i] = 0;
if ((i&E)&&!(i&D))
array[i] = 0;
if (array[i] == 1)
show(i);
}
}
/*
gcc -o abcde.exe abcde.c
./abcde.exe
Player: C D
*/
能力值:
( LV2,RANK:10 )
8 楼
这代码好像不怎么对啊
能力值:
( LV9,RANK:610 )
9 楼
老师留给你的题目 最好还是自己先思考思考
#include <stdio.h>
#include "memory.h"
typedef unsigned char byte;
/***********第一题*****************
1. 给定等式
A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
******************************/
/*************第二题**************
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
****************************************/
typedef void (* pfn)(const int *, int, int *);
void _select(const int *pInt, int size, int *pCount)
{
// A B C D E F G X Y Z
// 0 1 2 3 4 5 6 7 8 9
int m = pInt[0]*10000 + pInt[1]*1000 + pInt[2]*100 + pInt[3]*10 + pInt[4];
int n = pInt[3]*100 + pInt[5]*10 + pInt[6];
int r = pInt[7]*10000 + pInt[8]*1000 + pInt[9]*100 + pInt[3]*10 + pInt[4];
if (m + n*2 == r)
{
(*pCount)++;
printf("%d %d %d %d %d\r\n", pInt[0], pInt[1], pInt[2], pInt[3], pInt[4]);
printf(" %d %d %d\r\n", pInt[3], pInt[5], pInt[6]);
printf(" + %d %d %d\r\n", pInt[3], pInt[5], pInt[6]);
printf("─────\r\n");
printf("%d %d %d %d %d\r\n\r\n", pInt[7], pInt[8], pInt[9], pInt[3], pInt[4]);
}
}
void __do_it(const int *pInt, int size, int iDeep, int *pCount, pfn pfunc)
{
//结束条件
if (iDeep == size-1)
{
pfunc(pInt, size, pCount);
return ;
}
//递归
for (int i=iDeep; i<size; i++)
{
int pTemp[100] = {0};
memcpy(pTemp, pInt, size*sizeof(int));
//交换
pTemp[iDeep] = pInt[i];
pTemp[i] = pInt[iDeep];
__do_it(pTemp, size, iDeep+1, pCount, pfunc);
}
}
void func1()
{
int iCount = 0;
int szInt[10] = {1,2,3,4,5,6,7,8,9,0};
__do_it(szInt, 10, 0, &iCount, _select);
printf("组合数共有:%d种.\r\n", iCount);
}
/*************第二题**************
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
****************************************/
#define A 0
#define B 1
#define C 2
#define D 3
#define E 4
bool conditions(bool r[])
{
//(1)A参加时,B也参加;
if (r[A] == true)
{
if (r[B] != true)
{
return false;
}
}
//(2)B和C只有一个人参加
if (r[B] == true && r[C] == true)
{
return false;
}
//(3)C和D或者都参加,或者都不参加;
if (r[C] != r[D])
{
return false;
}
//(4)D和E中至少有一个人参加;
if (r[D]==false && r[E]==false)
{
return false;
}
//(5)如果E参加,那么A和D也都参加。
if (r[E]==true)
{
if (r[A] != true || r[D] != true)
{
return false;
}
}
return true;
}
void initr(bool r[], byte i)
{
r[0] = (i&0x01) == 0? false:true; //0000 0001
r[1] = (i&0x02) == 0? false:true; //0000 0010
r[2] = (i&0x04) == 0? false:true; //0000 0100
r[3] = (i&0x08) == 0? false:true; //0000 1000
r[4] = (i&0x10) == 0? false:true; //0001 0000
}
void func2()
{
//true 表示参加 false表示不参加
bool r[5] = {0};
//遍历所有的情况 2进制的 0-11111 即0~31
for (byte i=0; i<32; i++)
{
//初始化 r[5]
initr(r, i);
if (conditions(r) == true)
{
printf("参加竞赛的有:");
for (int j=0; j<5; j++)
{
if (r[j] == true)
{
printf("%c ", j +'A');
}
}
printf("\r\n");
}
}
}
int main(int argc, char* argv[])
{
printf("*********************第一题************************\r\n");
func1();
printf("*********************第二题************************\r\n");
func2();
return 0;
}
能力值:
( LV2,RANK:10 )
10 楼
C 语言功力深厚~~