一 : 何为A站、B站、C站、D站、F站
经常听别人说A站、B站、C站、D站、F站 那这些站到底是啥意思呢。二 : 有一个大家庭,父母共养有A,B,C,D,E,F,G七个子女,这七?
有一个大家庭
有一个,父母共养有A,B,C,D,E,F,G七个子女,这七个孩子的情况是这样的:
1.A有三个妹妹,
2.B有一个哥哥,
3.C是老三,她有两个妹妹,
4.D有两个弟弟,
5.E管前面两个叫姐姐,
6.F有个弟弟。
从以上的情况,呢知道这七个孩子中哪几个是女孩,哪几个是男孩?
男女及排列顺序如下:
1 D 男
2 A 女
3 C 女
4 B 男
5 G 女
6 F 女
7 E 男
首先第三位是C,这是题目指明的;E叫前面两个是姐姐,那么E放最后第七位,前面放F、G,因为F有个弟弟,所以E是男的;而E叫前面两个姐姐,所以F、G都是女的,F第六位,G第五位;第四位还缺,因为B前面有一个哥哥,第四位就放B;而C有两个妹妹,F、G已经是女的了,所以B就是男的;第二位放A,因为A有三个妹妹,现只有F、G是女的,还差一个,所以C是女的;第一位放D,因为B有一个哥哥,而B前面还没有男的,所以D是男的。
这个题A、D的顺序可以对换不影响,只不过性别不能变。而题目不管顺序只说男女,所以D、B、E三个是男的,A、C、G、F四个是女的。
三 : C程序设计某单位要在A、B、C、D、E、F,6人中选派若干人去执
C程序设计
某单位要在A、B、、D、E、F,6人中选派若干人去执行一任务,选人的条件如下:
(1)若C不去,则B去
(2)C和D,2人中去1个
(3)D和E要么都去,要么都不去
(4)A、B、F,3人中要去2人
(5)C和F不能一起去
(6)E和 F,2人中去一人
要求用C语言知识编程。
int factorial(int n)
{
if ( n<= 1 )
return 1;
else
return n * factorial(n-1);
}
int combination(int m, int n)
{
if (m<0 || n
return 0;
if (m>n/2)
m = n - m;
if (m == 0)
return 1;
if (m == 1)
return n;
int c = 1;
for (int i = 0; i
c *= n--;
return c/factorial(m);
}
void select(char & c, int i)
{
if (i<0 || i>7)
return;
c |= (1<
}
// select m bits from n bits
// 1 - selected, 0 - not selected
// n must be LESS THAN 8 (max == 7)
const char* select(int m, int n)
{
int size = combination(m, n);
if (size>0)
{
char *pResult = new char[size+1];
if (m == 0 || m == n) // size == 1
{
char c = '\x80';
if (m != 0)
{
for (int k = 0; k
select(c, k);
}
pResult[0] = c;
}
else if (m == 1) // C(1, n), size == n
{
for (int k = 0; k
{
pResult[k] = '\x80' | (1<
}
}
else // if (m>0)
{
int count = 0;
int k = max(0, 2*m-n);
for (; k<= m; ++k)
{
const char *pRight = select(k, m);
const char *pLeft = select(m-k, n-m);
int r = 0;
char cl, cr;
while ((cr = pRight[r++]) != '\0')
{
int l = 0;
while ((cl = pLeft[l++]) != '\0')
{
char c = '\x80' | cr | (cl<
pResult[count++] = c;
}
}
delete [] pRight;
delete [] pLeft;
}
}
pResult[size] = '\0';
return pResult;
}
return NULL;
}
bool rule_check(char c)
{
bool selected[6] = {false};
for (int i = 0; i<6; ++i)
{
if (c & (1<
selected[i] = true; // printf(" %c ", 'A'+i);
}
if (!(!selected[2] && selected[1]))
return false;
if (selected[2] == selected[3])
return false;
if (selected[3] != selected[4])
return false;
int count = 0;
if (selected[0]) ++count;
if (selected[1]) ++count;
if (selected[5]) ++count;
if (count != 2)
return false;
if (selected[2] && selected[2] == selected[5])
return false;
if (selected[4] == selected[5])
return false;
printf("solution: ");
for (int i = 0; i<6; ++i)
{
if (selected[i])
printf(" %c ", 'A'+i);
}
printf("\n");
return true;
}
int main()
{
bool found = false;
for (int i = 1; i<= 6; ++i)
{
const char *pCombinations = select(i, 6);
char c;
int k = 0;
while ((c = pCombinations[k++]) != '\0')
{
if (rule_check(c))
found = true;
}
delete pCombinations;
}
if (!found)
printf("No Solution!\n");
return 0;
}
四 : 何为A站、B站、C站、D站、F站
经常听别人说A站、B站、C站、D站、F站 那这些站到底是啥意思呢。五 : 何为A站、B站、C站、D站、F站
经常听别人说A站、B站、C站、D站、F站 那这些站到底是啥意思呢。61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1