[ccf-csp]2014-09-1-相鄰數對
試題編號: 201409-1
試題名稱: 相鄰數對
時間限制: 1.0s
記憶體限制: 256.0mb
問題描述:
問題描述
給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。
輸入格式
輸入的第一行包含乙個整數n,表示給定整數的個數。
第二行包含所給定的n個整數。
輸出格式
輸出乙個整數,表示值正好相差1的數對的個數。
樣例輸入
610 2 6 3 7 8
樣例輸出
3樣例說明
值正好相差1的數對包括(2, 3), (6, 7), (7, 8)。
評測用例規模與約定
1<=n<=1000,給定的整數為不超過10000的非負整數。
問題描述:
首先輸入正整數n,接著輸入n個正整數,對於這n個數,統計輸出其中的相鄰數對(差值為1的數對)。
問題分析:
看似是乙個n個數與n個數進行比較(時間複雜度高)的問題,但是可以用乙個標誌陣列來處理。因為,這n個數是正整數,最大值為10000。
另外一種做法是使用陣列排序,然後再統計相鄰對數。
程式說明:
方法一:使用標記陣列進行統計。
這裡寫了c語言和c++語言兩個版本的程式。
標誌陣列需要左右多2個元素,所以陣列元素的個數為n+2。使用函式memset()對標誌陣列進行初始化是套路,一定要理解掌握並且熟練應用。使用布林陣列也是本程式的乙個關鍵,可以節省空間,但是要付出時間的代價。
方法二:使用陣列排序實現。
排序需要付出稍微多一點的時間代價,通常其時間複雜度為o(n*logn),但是程式**更加簡潔易懂。
我的答案:
#include
#include
using
namespace std;
intmain()
;int sum =0;
for(
int i =
0;i < n;i++
)for
(int i =
0;i < n;i++)}
}for
(int i =
1;i < n;i++
) cout << sum << endl;
return0;
}
其他更好的答案: ccf csp201409 1相鄰數對
問題描述 試題編號 201409 1 試題名稱 相鄰數對 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,...
201409 1 相鄰數對
試題編號 201409 1 試題名稱 相鄰數對 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,表示值正好...
201409 1 相鄰數對
試題編號 201409 1 試題名稱 相鄰數對 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,表示值正好...