随笔分类 -  枚举

摘要:本题中最多5个命题变项:p,q,r,s,t每个有0,1两种取值,所以总共32种情况,分别枚举即可。对于每种情况,计算表达式的值,如果有结果为0的则输出not难点在于如何计算表达式的值,我们采用递归的方法,把表达式分为一或两个子表达式,并把参数end(本表达式的结束位置)传给上一层,一遍上一层获取第二... 阅读全文
posted @ 2013-01-30 20:25 再见~雨泉 阅读(273) 评论(0) 推荐(0)
摘要:题目链接http://poj.org/problem?id=2965采用二进制枚举,代码如下#include<iostream>#include<cstring>using namespace std;char ma[5][5];//用于输入int state;void shuru(){ int i; state=0; for(i=0;i<4;i++){ cin>>ma[i]; int j; for(j=0;j<4;j++) if(ma[i][j]=='+') state|=1<<(i*4+j); }}//反转一个,并 阅读全文
posted @ 2013-01-28 20:27 再见~雨泉 阅读(283) 评论(0) 推荐(0)
摘要:给十六个格子标上序号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15便可以采用二进制记录不同的状态 0 1 0 0 0 1 1 0 0 0 1 1 0 1 1 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 此时便记录下了 14 10 9 5 4 2 1 0最后采用十进制保存此时的状态 1表示‘b’,0表示‘w’,再做相应的翻转,既0 -> 1, 1 -> 0 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 char 阅读全文
posted @ 2013-01-28 12:13 再见~雨泉 阅读(573) 评论(0) 推荐(0)
摘要:输入n个元素组成的序列S,你需要找出一个最大乘积的连续子序列。如果不是正数,输出-1,表示无解。1=<n=<18,-10=<Si=<10。样例输入:32 4 -352 5 -1 2 -1样例输出:820#include<stdio.h>int main(){ int n; while(~scanf("%d",&n)) { int s[20]; for(int i=0;i<n;i++)scanf("%d",&s[i]); __int64 ji[400],max=-100000;int t=0; me 阅读全文
posted @ 2012-12-27 17:23 再见~雨泉 阅读(222) 评论(0) 推荐(0)
摘要:输入正整数n,按从小到大输出所有形如abcde/fghij=n的表达式。其中a~j为0~9的一个排列,2=<n=<79.样例输入:62样例输出:79546/01283=6294736/01528=62(代码有些累赘。。。)#include<stdio.h>#include<string.h>int main(){ int n; while(~scanf("%d",&n)) { int a,b,c,d,e; for(a=0;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<... 阅读全文
posted @ 2012-12-27 16:16 再见~雨泉 阅读(541) 评论(0) 推荐(0)