2016sdau課程練習專題三 1010

2021-07-14 15:11:57 字數 946 閱讀 2994

1.題目編號

1010

2.簡單題意

乙個人的辦公室用1表示,家用2 表示,從1到2,中間可能會經過其它節點,而該節點可走的原則是:假設他此時在a處,b與其相鄰,只有當b到2 路線中存在一條比a到2 的任意一條路徑都短的路徑,才能走b。問這樣的路線有多少種?

3.解題思路

求出各點到2-1的最短距離 同時存貯其它點到2的最短距離,然後

記憶化搜尋 從1開始 找到符合條件的路徑數

4.感想

題目很難理解,畢竟是英文啊,而且這道題做起來太難了,考慮的情況有點多

5.**

#include

#include

using namespace std;

typedef struct n1

node;

node n[1005];

int map[1005][1005],k;

int direct[1005];

void set(int n)

n[i].distens=10000000;n[i].flog=0;direct[i]=0;

}scanf("%d",&m);

while(m--)

}void spfa(int n)}}

}}int dfs(int now,int n)

for(i=1;i<=n;i++)

if(map[now][i]!=-1&&n[now].distens>n[i].distens)

return direct[now];

}int main()

}void init( int n )

int main(){

int n,m;

while( scanf("%d%d",&n,&m)==2,n||m ){

//if( n==0&&m==0 ) break;

for( int i=0;i

2016sdau課程練習專題三 1001

1.題目編號 2.簡單題意 給你一組數,求出最大的子串行的和,並說出起始位置 3.解題思路 該題目要求求出最大的子串行的和,因此要找出此組數中最大的連續子串行,前i項中只要大於0就可以加入子串行,若後續數字的和也大於0則繼續相加,直到求出最大值,同時在相加過程中,記錄數字位置 4.感想 上課老師講的...

2016sdau課程練習專題三 1012

1.題目編號 1012 2.簡單題意 在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 3.解題思路 題目又沒有原圖,設f 1 1 f 2 2 從圖中也可以觀察出來,第n張牌的排列可以又n 1張牌的排列再在末...

2016sdau課程練習專題三 1014

1.題目編號 1014 2.簡單題意 直線分割平面的題目,要求是求n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示 3.解題思路 遞推類的題目,和前面幾個乙個型別,找規律,當只畫一條線的時候,之前有多少根直線就最多再多出之前直線數量的加1...