資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
給出n個學生的成績,將這些學生按成績排序,
排序規則,優先考慮數學成績,高的在前;數學相同,英語高的在前;數學英語都相同,語文高的在前;三門都相同,學號小的在前
輸入格式
第一行乙個正整數n,表示學生人數
接下來n行每行3個0~100的整數,第i行表示學號為i的學生的數學、英語、語文成績
輸出格式
輸出n行,每行表示乙個學生的數學成績、英語成績、語文成績、學號
按排序後的順序輸出
樣例輸入
21 2 3
2 3 4
樣例輸出
2 3 4 2
1 2 3 1
資料規模和約定
n≤100
注意審題即可,思路不難想,題目都給出來了,迴圈即可搞定
需要注意的是,這題排序方式不包括總分。
#include
using
namespace std;
struct stu
s[105];
intmain()
for(
int i =
1; i)for
(int j = i +
1; j <= n; j++
)else
if(s[i]
.x == s[j]
.x)else
if(s[i]
.y == s[j]
.y)else
if(s[i]
.z == s[j]
.z)}}}
}for
(int i =
1; i <= n; i++
)return0;
}
該方法是最好寫的,缺點是執行速度慢,通過接下來的學習爭取可以找到提公升速度的方法
資源限制
時間限制:1.0s 記憶體限制:256.0mb
問題描述
給出n個學生的成績,將這些學生按成績排序,排序規則:總分高的在前;總分相同,數學成績高的在前;總分與數學相同,英語高的在前;總分數學英語都相同,學號小的在前
輸入格式
第一行乙個正整數n,表示學生人數
接下來n行每行3個0~100的整數,第i行表示學號為i的學生的數學、英語、語文成績
輸出格式
輸出n行,每行表示乙個學生的數學成績、英語成績、語文成績、學號
按排序後的順序輸出
樣例輸入
21 2 3
2 3 4
樣例輸出
2 3 4 2
1 2 3 1
資料規模和約定
n≤100
此題與上題類似,注意審題,這題引入了總成績的比較,但是去掉了語文成績的比較(難道語文不重要嗎!!!!??)解題思路和上題完全一樣。資料規模依然不大,用氣泡排序即可。
#include
using
namespace std;
typedef
struct
stu;
stu s[
105]
;int
main()
for(
int i =
1; i)for
(int j = i +
1; j <= n; j++
)else
if(s[i]
.sum == s[j]
.sum)
else
if(s[i]
.x == s[j]
.x)else
if(s[i]
.y == s[j]
.y)}}}
}for
(int i =
1; i <= n; i++
)return0;
}
總結:本次因為**較長,出現了許多小細節的錯誤。以後練習的**一定越來越長,爭取思路沒問題的題目一次ac,不要浪費時間在小的細節。 演算法營day9
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。思路 如果乙個陣列中,只有乙個數字出現一次的話,求這個數的?將序列中的所有數字異或,因為相同的數字異或會為0,乙個不為0的數字異或還是這個數字本身。這個題可以轉換為上述的題,將序列中的所有數字異或,...
雙指標演算法 day 9
樸素做法模板 for int i 0 i n i for int j 0 j i j if check j,i 雙指標演算法模板 for int i 0,j 0 i n i 問題 最長連續不重複子序列 給定乙個長度為n的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。輸入格式 第一行包...
演算法題Day9 移除元素
給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3 ...