這題要求的是n^n的digital Roots,其中n<10000。顯然的是肯定是不能暴力解決了!找規律。該題的規律是這樣的:無需直接求出n^n來再求其digital Roots。而是“平方一求”,然後用個迴圈一直計算完所有冪次為止。可見,這樣處理之後最多計算5000即可。舉個例子來說明下:9^9。先求9*9=81的digital Roots為9;然後用9*(9*9),再求其digital
做該題大概要注意以下幾方面:①每個自然數都可分解成質因數相乘的形式②數分為三類:質數是不為1,並且因數只為1和其本身的數。和數是不為1且不為質數的數。1既不是質數也非和數。③題目雖說輸入的是64-bits signed
寫在最前的三點:1、所謂圖的遍曆就是按照某種次序訪問圖的每一頂點一次僅且一次。2、實現bfs和dfs都需要解決的一個問題就是如何儲存圖。一般有兩種方法:鄰接矩陣和鄰接表。這裡為簡單起見,均採用鄰接矩陣儲存,說白了也就是二維數組。3、本文章的小測試部分的測試執行個體是:一、深度優先搜尋遍曆1、從頂點v出發深度遍曆圖G的演算法① 訪問v②
回首譚浩強《C++程式設計》,開篇就來講講重載。 首先,函數重載。 特點如下: ①重載函數的函數名相同。如求最大值的函數,int max(int a,int b)和double max(double a,double b)。 ②聲明時形參的個數或類型或順序必須至少有一項不同。 ③特別需要注意的是函數類型不能作為函數重載的一種標誌。也即是,如果函數名相同、形參個數以及類型都對應相同,只有函數類型不同,
這題的關鍵在於理解:要求第K大數,那麼我們只保留前K個大數,並且按降序排列。這也就是說每加入一個數就找到這個數的位置。然後將大於K個元素之外的數刪除。利用優先順序隊列就可以很好的做到這一點。下面的代碼中用到了兩種優先順序隊列的寫法。注釋的和非注釋的都可。並且時間都是62MS。 AC代碼:#include<iostream>#include<queue>using namespace std;/*struct node{int tmp;friend bool
最小產生樹模板題,採用prim演算法#include<iostream>#include<cstring>#include<cstdio>using namespace std;int ma[101][101];int cost[101]; int n;int prim(int s){int i,j;for(i=0;i<n;i++)cost[i]=ma[s][i];int sum=0;int
電腦進行運算引入補碼主要就是為了消除減法運算,但根據補碼的定義,形成補碼過程中又出現的減法運算。比如:x = - 1011[x]補 = 2^(4+1) + x = 100000 - 1011 = 1,0101若把模2^5 = 100000 =11111 + 00001 時,則上式可表示為:[x]補 = 2^5 + x = 11111 + 00001 + x又因 x 是負數,若 x 用 -x1x2x3x4表示,其中xi ( i = 1,2,3,4)不為0則為1,於是上式又可以寫成:[x]補 = 2
很開心哈!困擾我很長時間的一個檔案流的問題解決鳥! 問題源於英語老師讓我幫忙給全班同學根據學號排序,然後把名單給她。一百來號人就這樣給我人工排序了!虧我還是學電腦滴!!! 現在來貼下My Code:#include<fstream>#include<iostream>#include<string>using namespace std;struct node //學號、姓名{long s_id;char
這篇博文將會簡單介紹下菜單、表徵圖與游標在Windows視窗程序中如何使用。 一、菜單、表徵圖、游標都是作為資源在資源檔中定義的。1、菜單的定義方法:菜單ID MENU [DISCARDABLE]BEGIN 功能表項目定義END 功能表項目定義:定義普通功能表項目:MENUITEM 菜單文字 ,命令ID [,選項列表]定義分割線:MENUITEM SEPARATOR定義彈出式菜單:POPUP 菜單文字 [,選項列表]BEGIN
求解最大公約數和最小公倍數。有兩大種方法:求解最大公約數有歐幾裡德演算法和stein演算法。其中歐幾裡德演算法又分為一般的和擴充的歐幾裡德演算法。而求解兩數的最小公倍數則利用了它們的最大公約數,有公式lcm(a,b)=a*b/gcd(a,b)。lcm是最小公倍數的英文縮寫,gcd同樣。所以求解最小公倍數的代碼只在一般歐幾裡德演算法分析中介紹下,讀者可以舉一反三。 一、歐幾裡德演算法1、一般歐幾裡德演算法(只求最大公約數)求最大公約數一個經典的方法就是輾轉相除法了。以下將要介紹的代碼也是利用其求解
對話方塊分為模態對話方塊和非模態對話方塊。模態對話方塊是指只有其銷毀後,才能對其父視窗進行操作的對話方塊;而非模態則無此要求。本博文將會介紹下模態對話方塊的資源定義與使用。 一、基本知識對話方塊主要是用來進行和使用者互動的,其存在可以使得主視窗更加簡潔。對話方塊也是基於視窗的。但Windows的封裝使得建立對話方塊比建立視窗簡單的多。下面看看建立視窗、模態對話方塊與非模態對話方塊的異同:從可以發現以下幾點:1、建立對話方塊無需註冊類,不用調用建立、顯示和重新整理視窗的函數了。2、普通視窗和非模態
在做一道單詞接龍的題,可以簡單地void dfs()解決,不夠盡興,改成記憶式搜尋試試,話說在一本書上看到記憶是搜尋被稱作備忘錄法,屬於DP的一種。簡單的搜尋:void dfs(int last,int length){if(length>longest) longest=length;int i;for(i=0;i<n;i++)if(ans[last][i]!=0)if(time[i]<2){time[i]++;dfs(i,length+ans[last][i]);time[
表示剛開始了無思路!後來看了下討論,發現了"萬進位"。覺得奇妙,記下吧。 這題也讓我有了點想法。我們經常用的進位就是2進位、8進位、10進位和16進位。何來“萬進位”?世上本無,有人喊了也就有了。呵呵 現在來談談自己對進位的一點不成熟的想法。電腦能“識別”0和1,人能識別0、1、2、3、4、5、6、7、8、9以及其多位組合。那麼,
對話方塊對控制項的支援使得建立對話方塊變得格外的簡單,而不需要再像建立普通視窗那樣麻煩。使用者只需在資源檔中定義好控制項,那麼Windows在初始化對話方塊時就會為我們把控制項一一添加上去。當然,使用者還需要對控制項進行一些初始化的工作。 一、控制項使用1、控制項的定義control 文本 , ID , 類 , 風格 , x , y , 寬度 ,高度 [ ,擴充風格 ]其中值得注意的是 文本 是控制項的初始化值。這種定義較為麻煩,RC.EXE還為使用者提供了一種更加簡單的定義方法。控制項名稱
這道題要做到兩點:首先是會用bfs遍曆圖以得到最小時間;另外,痛點其實是在於如何確定那條最短路徑所經過的所有點。bfs始終層次遍曆,但這樣的遍曆會遇到一個問題:如果每個點所花費的代價是相同的,那麼如何走並不會影響總時間。可是現在的問題是:代價並不一樣。那麼就會有這樣一個問題:如果還是按普通的層次遍曆,那麼同一層上的節點可能會搶佔下一層的節點。比如,同為第二層節點的a,b(其代價分別為6和4),共有一個第三層的節點c,同時訪問c都會分別花去a,b一個代價。可是現在如果a先訪問,訪問後b將不能再訪問
這三題都是尋找前m大數。所以,貼在一起,有個比較。 1425和1280的主要思想是一樣的:空間換時間。但並不是每一道排序題都可以這樣做,有條件限制才可以,什麼條件呢?1425的條件是:每個整數範圍[-500000, 500000]。1280的條件是:每個正整數不大於5000,所以兩數相加範圍為[2,10000]。這樣就可以用一個輔助數組來記錄了,詳見代碼。但3785就不可以,必須排序。
不想多說什麼了,這題虐我不淺,還是看完別人的解題報告的情況下。#include<iostream>#include<cstdio>#include<cstring>using namespace std;int father[50001],relative[100001];int n;int find_ant(int c){if(father[c]!=c){int t=find_ant(father[c]); //這一句和下一句不能顛倒,relative[
首先介紹下基本概念:二叉排序樹是一棵二叉樹,或者為空白,或者滿足以下條件: ①若左子樹不空,則其上的值均小於根的值; ②若右子樹不空,其上的值均不小於根的值; ③左右子樹也是二叉排序樹 下面以基本的構造二叉排序樹和尋找其中的元素來說明其基本的演算法。1、構造 構造的基本思想:假設已存在一棵二叉排序樹,需要向其上添加元素。方法是建立一個指向node類型的指標,將key裝入該指標指向的地區,然後遍曆二叉排序樹以尋找到合適的位置,將建立節點連結上。
我對這道題表示不解!明明題目沒有什麼限制條件,居然用以下第一種代碼也過了。 代碼一:(雖過了,但個人覺得是錯誤答案!)#include<iostream>using namespace std;int a[32768];int main(){int
這題還是想了很長時間的! 剛開始的思路就是簡單暴力,可是卻TLE了!為啥呢?簡單原因:舉個例子來說明。把132當做generator來計算其的“後代”,要算多少下呢?這個問題將是 可否解決問題的關鍵。兩種方式:①從132開始一直運算到“後代”是小於1000000的最大整數為止。類比幾個數:132、138、150、156、168......。這個算