C 心路歷程27 變數排序

2021-08-01 09:12:05 字數 2267 閱讀 3785

變數排序

【問題描述】

把不同的變數進行公升序排序用小於操作符命令實現的。例如由a < b, b < c 和 c < d 可以得到公升序序列a, b, c, d 。

在本題中,你將得到若干條小於操作符命令,形如 a < b 的格式,請你確定利用這些命令,能否得到乙個唯一的公升序序列。

【輸入格式】

第1行為整數n,m,n(2 <= n <= 26)表示參與排序的是前n個大寫字母,m表示給出命令的條數。

【輸出格式】

輸出一行:

如果根據輸入能得到唯一的公升序序列,則輸出「sorted sequence determined after *** relations: yyy…y. 」

如果不能得到唯一的公升序序列,則輸出「sorted sequence cannot be determined. 」

如果不能得到公升序序列,則輸出「inconsistency found after *** relations. 」

上面的資訊中 *** 是乙個整數,是表示至多根據前***條資訊就可以得出該結論。 yyy…y表示得到的公升序序列的大寫字母串。

【輸入樣例】

【樣例1】

4 6

a < b

a < c

b < c

c < d

b < d

a < b

【樣例2】

3 2

a < b

b < a

【樣例3】

26 1

a < z

【輸出樣例】

【樣例1】

sorted sequence determined after 4 relations: abcd.

【樣例2】

inconsistency found after 2 relations.

【樣例3】

sorted sequence cannot be determined.

【分析】

這道題雖然給了一堆條件,卻讓我們判斷前i個是否可行,於是判斷時我們也只需要用前i個條件。在輸入時判斷即可。

【輸入框架】

void init()

}if(ok)

}

而具體到如何檢查,即check函式,我們可以由題給條件想到dag圖(排序很特殊)與拓撲序列。其要判斷的 唯一性/是否存在性 也與拓撲排序相符。注意判斷的幾個條件在題中比較關鍵。

完整**:

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=10005;

int n,m,first[maxn],x,y,np=0,hash[30][30],mark[30],rd[30],t[30];

int cnt=1;

char w[maxn][30],yy;

vector

topo;

struct edge

e[maxn<<1];

void addedge(int u,int v)

; first[u]=np;

}int check(int rr)

//找有效點個數

topo.clear();

int ret=1;

queue

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

}while(!q.empty())

int i=q.front();q.pop();

for(int p=first[i];p;p=e[p].next)}}

if(topo.size()//出現了環

if(ret==2) return ret;//如果有多條直接return 即當前條件不足以判斷

if(topo.size()==n)//符合條件

printf(".");

return ret=1;

} if(topo.size()return ret=2;//補充條件:如果是唯一的 但是卻沒有達到n個

}void init()

memcpy(t,rd,sizeof(t));

if(check(i)!=2)

}if(ok)

}int main()

C 學習心路歷程

這裡只記錄c 的特色地方,想來本科專攻c 跟圖形程式設計,真心沒想到半路殺出來個unity還特麼用了c 所以嘛,最近惡補這方面的東西,把跟c 相似的地方看看就好,這裡把c 的好東東都記錄下,有一些還挺有逼格的說,希望能有幸成為高手!1 params關鍵字 本關鍵字在於可變長引數的利用,比如 stat...

指標(心路歷程)

2019 3 10 許多初學c 語言指標的人剛開始會理不清思路,即使有教材書在比上也會一頭霧水,我也是剛入門,給一下我的想法。指標,簡單來說就是乙個存放位址的變數。你可一聯想門牌號和房子的關係。c語言的指標,主要兩種運算子。和 可以簡單理解為取值,而 可以理解為取址。例如char cp ch cp存...

心路歷程 20161118

171219我王老五又回來水題了!由於種種原因 比如不想參加本班只有四人參加的月考 本wc都去不了的蒟蒻回來準備,省選了,爭取拿到胸牌233.昨天因為不出去培訓,還被教練教育了一番quq 20天 期間單個的晚上刷水題 各種演算法的基本思想和裸的 實現 不追求比較深的內容。難度什麼的不好說 比如kmp...