poj 1950 Dessert(dfs枚举,模拟运算过程)

 /*
  这个代码运行的时间长主要是因为每次枚举之后都要重新计算一下和的值!
    如果要快的话,应该在dfs,也就是枚举的过程中计算出前边的数值(这种方法见第二个代码),直到最后,这样不必每一次枚举都要从头再算一遍值!
*/
1
#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 7 char ch[20]; 8 char sign[3]={'+', '-', '.'}; 9 int n, cnt; 10 int num[20]; 11 int signNum[200]; 12 13 void dfs(int u){ 14 if(u==n){ 15 if(signNum['+']==n-1 || signNum['+']+signNum['.']==n-1 || signNum['.']==n-1 || signNum['-']==n-1) return; 16 for(int i=1; i<n; ++i){ 17 num[i]=i; 18 if(ch[i]=='.'){ 19 int s=i, v=i; 20 while(i<n && ch[i]=='.'){ 21 if(i+1>9) 22 s=s*100+(++i); 23 else s=s*10+(++i); 24 } 25 if(s>10000) return ;//非得加上这句话....然后就幸运的过了! 26 num[v]=s; 27 --i; 28 } 29 } 30 num[n]=n; 31 int s=num[1]; 32 for(int i=1; i<n; ++i) 33 if(ch[i]!='.'){ 34 if(ch[i]=='+') s+=num[i+1]; 35 else s-=num[i+1]; 36 } 37 if(s==0){ 38 ++cnt; 39 if(cnt<=20){ 40 for(int i=1; i<n; ++i) 41 printf("%d %c ", i, ch[i]); 42 printf("%d\n", n); 43 } 44 } 45 return; 46 } 47 for(int i=0; i<3; ++i){ 48 ch[u]=sign[i]; 49 ++signNum[sign[i]]; 50 dfs(u+1); 51 --signNum[sign[i]]; 52 } 53 } 54 55 int main(){ 56 while(scanf("%d", &n)!=EOF){ 57 cnt=0; 58 dfs(1); 59 printf("%d\n", cnt); 60 } 61 return 0; 62 }

 

 /*
    清晰的思路,清晰的代码.....T^T!
*/
1
#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 char sign[3]={'+', '-', '.'}; 7 int n, cnt; 8 char ch[20]; 9 int dir[2]={10, 100}; 10 11 12 //pre记录的是'+' 或者是 '-'的左边的运算值, nowI记录的是其右边的值 13 void dfs(char chPre, int pre, int nowI, int cur){ 14 if(cur==n){ 15 int s=-1; 16 if(chPre=='+') 17 s=pre+(nowI*dir[cur/10]+cur); 18 else if(chPre=='-') 19 s=pre-(nowI*dir[cur/10]+cur); 20 //如果chPre=='.' 说明整个式子中不存在运算符号+或者-, 那最终的结果一定不是0 21 if(s==0){ 22 ++cnt; 23 if(cnt<=20){ 24 for(int i=1; i<n; ++i) 25 printf("%d %c ", i, ch[i]); 26 printf("%d\n", n); 27 } 28 } 29 return ; 30 } 31 for(int i=0; i<3; ++i){ 32 ch[cur]=sign[i]; 33 if(ch[cur]!='.'){ 34 if(chPre=='+') 35 dfs(ch[cur], pre+(nowI*dir[cur/10]+cur), 0, cur+1); 36 else if(chPre=='-') 37 dfs(ch[cur], pre-(nowI*dir[cur/10]+cur), 0, cur+1); 38 else dfs(ch[cur], pre*dir[cur/10]+cur, 0, cur+1); 39 } 40 else{ 41 //之前出现了运算符,当前不是运算符 42 if(chPre=='+' || chPre=='-')//一直累计nowI的值 43 dfs(chPre, pre, nowI*dir[cur/10]+cur, cur+1); 44 else //如果之前没有出现过运算符+或者-,一直累计pre的值 45 dfs(chPre, pre*dir[cur/10]+cur, 0, cur+1); 46 } 47 } 48 } 49 50 int main(){ 51 while(scanf("%d", &n)!=EOF){ 52 cnt=0; 53 dfs(' ', 0, 0, 1); 54 printf("%d\n", cnt); 55 } 56 return 0; 57 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/3955021.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj1949Chores(建图或者dp)

1 /*2 题意&#xff1a;n个任务&#xff0c;有某些任务要在一些任务之前完成才能开始做&#xff01;3 第k个任务的约束只能是1...k-1个任务&#xff01;问最终需要最少的时间完成全部的 4 任务&#xff0…

java 空数组如何判断,java判断数组是否为空

java判断数组是否为空根据数组长度判断&#xff0c;如果为0&#xff0c;则为空&#xff0c;反之不是。 (推荐学习&#xff1a;java课程)public class Main {public static void main(String[] args) {int[] array1 new int[]{}; //被当成 {0}if (array1 null) {System.out.pr…

2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

/*   将给定的一个字符串分解成ABABA 或者 ABABCAB的形式&#xff01; 思路&#xff1a;暴力枚举A, B, C串&#xff01; */ 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<string>5 6 using namespace std;7 str…

php switch goto,PHP goto语句用法实例

问题当 PHP 在执行代码过程&#xff0c;在某一时刻我们希望它能跳转到某一特定位置继续执行代码&#xff0c;该怎么做呢&#xff1f;回答在 PHP 中&#xff0c;我们可以使用 goto 操作符来使 PHP 代码执行器跳转到程序中某一特定位置。goto 的使用有一定限制&#xff0c;如&…

php curl cookie,php中curl获取返回页面的cookie

php的curl可以模仿用户浏览网页并且获取网页的cookie,获取cookie还有专用的参数如CURLOPT_COOKIEJAR 用于保存 cookie 到文件了,下面一起来看几个例子吧.curl可以获取返回页面设置的cookie,原理跟get_headers是一样的,在返回的头信息中将"Set-Cookie:"的内容取出来即…

php访问网页post获取源码,第一次抓别人网站数据,用postman直接请求可以获取到返回数据,通过代码的方式就一直报错,php...

最近需要抓取下KFC的一些数据通过postman把请求地址和参数都拿过来后可以返回数据我就天真的以为可以通过代码直接发送一个post请求即可但是通过php的curl模拟请求后&#xff0c;返回的一直是服务器异常刚开始时好像成功过&#xff0c;但现在一直都是报这个&#xff0c;我用的就…

c++中关于初始化型参列表的一些问题

1 /*2 1.成员是按照他们在类中出现的顺序进行初始化的&#xff0c;而不是按照他们在初始化列表出现的顺序初始化的!3 一个好的习惯是&#xff0c;按照成员定义的顺序进行初始化。4 2.数组成员在初始化型参列表中不正确 5 */6 #include<iostream>7 #include<cstdio&…

话术php源码,恋爱话术宝典织梦源码

恋爱话术宝典网页版&#xff1a;http://vi.520menghuan.cn恋爱话术宝典app下载&#xff1a;https://www.lanzous.com/i2dmywd恋爱话术宝典app&#xff0c;里面有超过4万条可复制聊天的恋爱聊天话术&#xff0c;这是一款经典的“智能代聊 APP”。花式套路小哥哥、小姐姐&#xf…

c++中基类与派生类中隐含的this指针的分析

先不要看结果&#xff0c;看一下你是否真正了解了this指针&#xff1f; 1 #include<iostream>2 using namespace std;3 4 class Parent{5 public:6 int x;7 Parent *p;8 public:9 Parent(){} 10 Parent(int x){ 11 …

java中子类与父类中隐含的this引用的分析

/*看一下下面的程序&#xff0c;看是否你的答案和运行的答案是否一致&#xff01; */ class Parent{public int x;public Parent p;public Parent(){}public Parent(int x){this.xx; pthis;}public void f(){System.out.println("Parent::f()"); }public void g(){Sy…

php注册机制,php自动注册登录验证机制实现代码_PHP教程

背景&#xff1a;在phpwind站点后台添加一个名为“广告管家”(广告管家为CNZZ的一款广告投放的应用)的应用&#xff0c;整个“广告管家”的应用是通过iframe载入&#xff0c;载入的具体内容根据不同站点显示针对该站点的具体内容&#xff0c;为了提高易用性&#xff0c;有以下的…

codeforce No to Palindromes!(枚举)

1 /*2 题意&#xff1a;给定一个字符串中没有任何长度>1的回文子串&#xff01;求按照字典序的该串的下一个字符串3 也不包含长度>1的任何回文子串&#xff01;4 5 思路&#xff1a;从最低位进行枚举&#xff0c;保证第i位 不与 第 i-1位和第 i-2位相…

php js 比较,PHP与JS的比较

1楼一直以来&#xff0c;php和js一样&#xff0c;都被视做脚本语言。的确&#xff0c;他们两者蛮像的。首先他们都是弱类型语言&#xff0c;定义变量的时候不需要指定某个具体类型&#xff0c;变量类型可以实现隐式转换。虽然很多人说这样会带来很多一些潜在的问题&#xff0c;…

codeforces Restore Cube(暴力枚举)

1 /*2 题意&#xff1a;给出立方体的每个顶点的坐标&#xff08;是由源坐标三个数某几个数被交换之后得到的&#xff01;&#xff09;&#xff0c; 3 问是否可以还原出一个立方体的坐标&#xff0c;注意这一句话&#xff1a;4 The numbers in the i-th output line…

php 非递归调用,php 无限分类(非递归)

/*** 无限分类* 2011/8/24* kcj* */include "../conn/conn.php";$flpid$_POST[flpid];$fltitle$_POST[title];$fldes$_POST[des];if(isset($_POST[action])!&&$_POST[action]"add"){ // 无限分类(非递归)&#xff0c;用路径来判断分类归属(flidflp…

树状数组三种模型

树状数组在区间求和问题上有大用&#xff0c;其三种复杂度都比线段树要低很多……有关区间求和的问题主要有以下三个模型&#xff08;以下设A[1..N]为一个长为N的序列&#xff0c;初始值为全0&#xff09;&#xff1a;&#xff08;1&#xff09;“改点求段”型&#xff0c;即对…

php实现直播答题系统,直播答题解决方案

概述即构提供直播答题一站式解决方案&#xff0c;包括 Windows 主播端、移动 APP 端示例源代码(iOS、Android)。1 下载/体验地址由于直播答题场景需要主播端(推流、发题)和观众端(拉流、答题)配合使用&#xff0c;因此开发者需要同时下载这两端的软件。下载后&#xff0c;具体的…

poj 3486 A Simple Problem with Integers(树状数组第三种模板改段求段)

1 /*2 树状数组第三种模板&#xff08;改段求段&#xff09;不解释&#xff01; 不明白的点这里&#xff1a;here&#xff01;3 */4 #include<iostream>5 #include<cstring>6 #include<cstdio>7 #include<algorithm>8 #define N 1000059 us…

php路由类默认模块,微擎入口路由及其模块入口路由 - YangJunwei

一、微擎入口路由微擎有2个入口文件/web/index.php?csite&aentry/app/index.php?centry路由变量$controller $_GPC[c]; //web入口缺省值account&#xff0c;app入口home$action $_GPC[a]; //index.php入口文件开头$acl变量可配置默认方法$do $_GPC[do];不管$action是什…

matlab subs 慢,求助matlab程序计算速度过慢的原因

程序代码如下function [length]contactlength(x0)if x0>50||x0error:数据超出尺寸范围elsesyms xR300;%非球面顶点曲率半径c1/R;delta0.1;k-3.3;%非球面参数rb27;%半径y(-1*c*x.^2)./(1sqrt(1-(1k)*(c^2)*x.^2));dydiff(y);dy2diff(y,2);dyx0subs(dy,x0);dy2x0subs(dy2,x0);…