实例九:循环应用题(穷举法)
#include <stdio.h>
int main(void)
{
int a, b, c, d, e;
for(a=0;a<2;a++)
for(b=0;b<2;b++)
for(c=0;c<2;c++)
for(d=0;d<2;d++)
for(e=0;e<2;e++)
{
if((a&&b||!a)&&(d+e1)&&(b+c1)&&(c&&d||!c&&!d)&&(e&&a&&d||!e))
{
if(a) printf(“去A地\n”);
if(b) printf(“去B地\n”);
if© printf(“去C地\n”);
if(d) printf(“去D地\n”);
if(e) printf(“去E地\n”);
}
}
return 0;
}
心得:
对于关系运算符,与或运算先列出表达式
若去A则必去B:(a&&b||!a)
D和E只能去一个:(d+e1)或(d&&!e)||(e&&!d)
B和C只能去一个:(b+c1)或(b&&!c)||(c&&!b)
C和D要不都去要不都不去:(c+d2||c+d0)或(c&&d)||(!c&&!d)
如果去E则必须去A和D:(e&&a&&d)||!e
由题意上述五个表达式是“与”的关系:
(a&&b||!a)&&(d+e1)&&(b+c1)&&(c&&d||!c&&!d)&&(e&&a&&d||!e)
然后穷举去各地的可能以及把最后加上条件。