最近由於疫情的原因,不得不在家準備藍橋杯的比賽,開始也是一頭霧水,慢慢的發現還可以,就拿出最近訓練的幾道題來和大家分享一下`都是藍橋杯練習系統裡面的原題
1.問題描述
有n(2≤n≤20)塊晶元,有好有壞,已知好晶元比壞晶元多。
每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果(即此結果與被測試晶元實際的好壞無關)。
給出所有晶元的測試結果,問哪些晶元是好晶元。
輸入格式
輸入資料第一行為乙個整數n,表示晶元個數。
第二行到第n+1行為nn的一張表,每行n個資料。表中的每個資料為0或1,在這n行中的第i行第j列(1≤i, j≤n)的資料表示用第i塊晶元測試第j塊晶元時得到的測試結果,1表示好,0表示壞,i=j時一律為1(並不表示該晶元對本身的測試結果。晶元不能對本身進行測試)。
輸出格式
按從小到大的順序輸出所有好晶元的編號
樣例輸入
31 0 1
0 1 0
1 0 1
樣例輸出
1 3由於是n個晶元,所以需要比較nn次,又因為題目中交代的很清楚,好的晶元大於壞的晶元。設定每一列中測試為好的晶元序號為1,則只需要判斷每一列中為1的個數是否大於原有晶元的一半即可判斷是否為好的晶元
#include
int n;
int a[20]
[20];
int num[20]
=;int main ()}
int flag=0;
//設定輸出格式
for(i=
1;i<=n;i++
)else
printf
(" %d"
,i);}}
return0;
}
`問題描述
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。
輸入格式
輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。
輸出格式
輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用乙個空格分隔,行末不要有多餘的空格。
樣例輸入
3 31 2 3
4 5 6
7 8 9
樣例輸出
1 4 7 8 9 6 3 2 5
樣例輸入
3 21 2
3 45 6
樣例輸出
1 3 5 6 4 2
首先輸出第乙個數,因為第乙個是固定的,然後採取分別向下,向右,向上,向左進行遍歷
#include
intmain()
;int m,n,i,j;
scanf
("%d %d"
,&m,
&n);
for(i=
0;i)for
(j=0
;j)scanf
("%d"
,&num[i]
[j])
;int count=1;
int x=
0,y=0;
printf
("%d"
,num[x]
[y])
; flag[x]
[y]=1;
while
(countwhile
(y+1
[y+1]==
0)while
(x-1
>=
0&&flag[x-1]
[y]==0)
while
(y-1
>=
0&&flag[x]
[y-1]==
0)}printf
("\n");
return0;
}`
這兩道題還是挺有代表性的 備戰藍橋杯 USACO milk
沒有找到oj的 直接把翻譯過的題目帶來 今天開始貪心演算法類的訓練了。不過看到前面那個雙重回文數的題目難度等級定為通過初賽,我就開始有興致去挑戰一下了,本來還說,可能還是什麼沒有什麼難度,就是會麻煩一點的東西。現在,我還就是想挑戰一下了。今天的題目依舊簡單。不多說了,直接上 典型貪心,排序,由小到大...
備戰藍橋杯 USACO crypt
從今天開始,有時間的話,至少做到每天破兩題。簡單的也就快一點。今天的題比較簡單,也比較粗暴。感覺在上一屆的藍橋杯遇到過類似的題型。爆搜。恐怖的5個迴圈。今天學到一種新的方法,hash函式的方法。不僅思路清晰了,編碼的速度也很快。很好用。1 將合法的數字標記 2 利用取餘數操作取數字判斷 3 根據資料...
藍橋杯備戰 階乘計算
問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相...