poj2632 Crashing Robots

        類比,按部就班的寫就好了,基本沒啥邏輯。#include <stdio.h>#include <string.h>typedef struct tRobot{int x;int y;int d;}Robot;int A,B,N,M;Robot r[101];int occ[101][101];int directions[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int get_direction(char*

記憶化搜尋 HDU1501

自己想不到啊,原來記憶化也可以當做是剪枝的一部分,有個小發現,用bool類型判斷比0 1判斷效率高點#include<stdio.h>#include<string.h>#define Max 205bool memory[Max][Max];char str1[Max],str2[Max],str3[500];bool found;void dfs(int atemp,int btemp,int ptemp);int main(){int

POJ 1942 Paths on a Grid

題意:一個A*B的矩陣,題問從左下點沿矩陣的邊走到右上點有多少種不同的走法,每次只能向右走或者向上走。 思路:排列組合計數。/*每一個點的不同走法的總數,是由左邊的點和下邊的點的總數之和。*//*這就很容易聯想到排列組合的一個公式:,其中,n為走到這點所總共經過的邊數(不分橫邊豎邊),r可以看為已經走過的橫邊或者豎邊。*//*即有n = a + b,r = a 或者 r = b。*/-----借鑒別人的思路 Source CodeProblem: 1942 User:

第一個DFS,第一個遞迴 HDU1515

遞迴真的很強大,對自己還算挺滿意的,第一次就寫出了不錯的成果#include<stdio.h>#include<string.h>void digui(char[],int ,int,int,int);char s[1000];char p[1000];int flag[1000];int flagtemp;int sl,pl;int main(){char

poj1321 棋盤問題(簡單搜尋)

#include <stdio.h>int n;int k;int count;int row[8];int col[8];int myindex;char ch[8][9];int find(int v,int* t){int i;for(i=0;i<myindex;i++){if(t[i]==v){return 1;}}return 0;}void try(int left_count,int bi){int i,j;if(left_count>n-bi){//剪枝,

poj1521 Entropy(Huffman)

        哈夫曼編碼,因為大寫字母一共才26個,加上底線一共27個字元,所以節點數至多是27個,用不用堆都無所謂了.........另:第一次寫指標數組的cmp函數啊,還是有要注意的地方...#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct tNode{int count;struct tNode* l;struct tNode* r;}Node;char

單源最短路徑

#include<stdio.h>#define Max 999#define Maxverts 10typedef struct {int numverts;int adj[Maxverts][Maxverts];}graph;void chushi(graph &g);void dij(graph&,int key,int [],int []);int main(){graph g;int n,a,b,k,i,j;int

POJ 3737 UmBasketella (三分演算法)

/*題意:給你一個圓錐體,圓錐底面積給出,問你圓錐的最大體積是多少。思路:枚舉底面圓半徑,算圓錐的體積。可以列出運算式,滿足三分,因此可以三分枚舉底面圓半徑 函數:s=PI*(r+sqrt(r*r+h*h)),這樣三分r或者h都可以求出另一個,我是算得r*/ Source CodeProblem: 3737 User: imutzcyMemory: 200K Time: 0MSLanguage: C++ Result: AcceptedSource

poj2352 stars(線段樹)

        頻繁的統計某區間範圍內的數一共有多少個,只不過這裡可以認為區間左端點始終是0。區間查詢問題,一開始自己yy了個二叉排序樹,發現效率和直接掃沒兩樣啊,逾時。後來改用線段樹,插入是logN,查詢雖然我不會算,但大概也是常數*logN。       

HDU 1016 不一樣的DFS

邊界判斷以及遞迴寫的方式都和之前的不大一樣,要多總結才行了include<stdio.h>#include<string.h>int prime[45];int used[22];int quan[22];int n;void dfs(int);int main(){int t=0;memset(prime,0,sizeof(prime));prime[2]=prime[3]=prime[5]=prime[7]=prime[11]=prime[13]=prime[17]=

poj1703 團夥(並查集)

        敵人的敵人就是朋友.....試了試啟發學習法合并....#include <stdio.h>#define Q 100001int N;int M;int friend[Q];int enemy[Q];int rank[Q];int find(int i){int j=i;while(i!=friend[i]){i=friend[i];}friend[j]=i;return i;}int union_set(int i,int

poj1182 食物鏈(並查集)

        每個節點需要記錄其與父節點的位移,判斷x和y吃與被吃的關係時,可以根據x、y與他們共同的祖先的位移來判斷。#include <stdio.h>int N;int p[50001];int offset[50001];//與父節點之間的位移int find(int x){int o=0;int y=x;while(x!=p[x]){//找祖先,順便計算和該祖先的位移o+=offset[x];x=p[x];}p[y]=x;offset[y]=o%3;return

poj1088 滑雪(動態規劃)

        原題就是中文的,直接複製過來好了。DescriptionMichael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的地區必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待升降機來載你。Michael想知道載一個地區中最長底滑坡。地區由一個二維數組給出。數組的每個數字代表點的高度。下面是一個例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10

poj2528 Mayor’s posters (線段樹)

        據說是線段樹入門題,算是又學習了一種資料結構啊,入個門瞭解瞭解這種資料結構的特點就得了,不打算深入了.....       

poj2192 Zipper(動態規劃)

        挺好的字串動態規劃,比較好想,狀態方程也比較好寫。#include <stdio.h>#include <string.h>char first[201];char second[201];char str[401];int d[201][201];int dp(int i,int j){if(d[i][j]!=-1){return

poj1458 最長公用子序列LCS(dp)

        講動態規劃的地方几乎都會提到它,挺經典的題目.....#include <stdio.h>#include <string.h>int dp[500][500];int lcs(char* str1,char* str2,int len1,int len2){if(dp[len1][len2]!=-1){return dp[len1][len2];}if(len1==0||len2==0){dp[len1][len2]=0;return

poj3437 Tree Grafting(樹的左孩子右兄弟表示)

        根據題目中給的dfs序列構造出一個左孩子右兄弟表示的樹,然後求樹高就可以了。#include <stdio.h>#include <string.h>typedef struct tNode{int p;int l;//left childint r;//right childint lc;//last child}Node;char str[20000];Node n[10000];int height(int i){int l=n[i].l;int

poj3032 Card Trick

        用隊列從最後的狀態往前推就可以了。用頭部刪除,尾部插入的鏈表的話,最後需要倒序輸出,因此就用了頭部插入,尾部刪除的鏈表,稍麻煩點......後來想想,倒序輸出好像也沒什麼,最多才13個元素,複製到數組裡倒序輸出就是了,話說13個元素,其實一開始就應該直接用數組實現隊列,代碼起碼得減一半兒...#include <stdio.h>#include <stdlib.h>typedef struct tCard{int value;struct tCard*

poj3344 Chessboard Dance(類比)

        噁心的類比啊,代碼像翔一樣長啊,沉住氣寫就好了....#include <stdio.h>char ch[8][9];char command[5];int direction;int step;char dc[6];int r;int c;int blank[8];int directions[4][2]={{-1,0},{0,1},{1,0},{0,-1}};char symbol[]="^>v<";void

poj2488 馬踏棋盤(dfs)

        按照馬的行走規則,在棋盤上找一條路,恰好經過每個格子一次。比較基礎的深搜,注意搜的時候8個方向是有先後順序的(因為要求字典序輸出)。#include <stdio.h>#include <string.h>int p;int q;int visited[27][27];char path[1400];int path_index;int direction[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},

總頁數: 61357 1 .... 21019 21020 21021 21022 21023 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.