生物學家發現,與特定功能相關的一群基因在基因序列上的位置通常十分靠近,因此在
不同的基因序列中如果都看見相同基因構成的連續片段 (順序不重要),這些基因構成的集合
就被認為是有意義的,稱為基因群 (gene cluster)。例如: 如果在一條基因序列上看到一個片段
內容為 (a,b,c,d),同時在另外一條基因序列上看到一個片段內容為 (d,b,a,c),那麼 {a,b,c,d} 就構成一組基因群。
找出基因群並不是一件容易的工作,有一個計算生物學家想到一個聰明的方法來簡化這
個問題。經過他的簡化後,基因群辨識的主要工作會被轉換成: 輸入一個由相異正整數組成的
序列 S,然後判斷 S 的內容是否構成連續的一串整數。例如: S=(2,5,3,4) 的內容構成連續
的一串整數 2,3,4,5;但是 S=(2,6,3,4) 的內容並不構成連續的一串整數 (缺了 5)。
給定一個數字所構成的序列,請撰寫一個程式來判斷這個序列中的數字是否構成連續的
一串整數。
測試資料是由一行的數字所構成 (數字間以一個以上的空白隔開),第一個數字 n 表示所給定數字序列的長度,1<n≤100,接下來會有 n 個相異的正整數 mi,1≤i≤n 且 1≤mi≤1000,表示數字序列的內容。
輸出一行,如果此序列中的數字構成連續的一串整數,請輸出: abyes;不行則輸出: abno,其中 a 和 b 分別代表序列中所有數字的最小值與最大值。a 和 b 之間以及 b 和 yes/no 之間,請以剛好一個空白隔開。(yes/no 請用小寫)
輸入範例 1: 2 6 5 輸入範例 2: 2 5 7
輸出範例 1: 5 6 yes 輸出範例 2: 5 7 no
C++:
/* 連續數 eg: 4 5 6 7 8 9 長度6 在連續數下會發現最大值 -最小值 = 長度-1 **/ #include <iostream> #include <algorithm> using namespace std; int main() { int n; while(cin>>n){ int arr[n]; for(int i=0;i<n;i++){ cin>>arr[i]; } sort(arr,arr+n); if(arr[n-1]-arr[0]==n-1){ cout<<arr[0]<<" "<<arr[n-1]<<" yes"<<"\n"; } else{ cout<<arr[0]<<" "<<arr[n-1]<<" no"<<"\n"; } } return 0; }
python:
""" 連續數 eg: 4 5 6 7 8 9 長度6 在連續數下會發現最大值 -最小值 = 長度-1 """ while True: try: arr=list(map(int,input().split())) arr_len=arr[0] arr=arr[1:] #print(arr) if(max(arr)-min(arr)==arr_len-1): print(min(arr),max(arr),"yes") else: print(min(arr),max(arr),"no") except:break