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.pswp.cn/news/531688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531688.shtml
英文地址,請注明出處:http://en.pswp.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);…