問題 1153 C語言訓練 誰家孩子跑最慢

2021-10-03 05:43:43 字數 1700 閱讀 7720

時間限制: 1sec 記憶體限制: 128mb

張王李三家各有三個小孩。一天,三家的九個孩子在一起比賽短跑,規定不分年齡大小,跑第一得9分,跑第2得8分,依此類推。比賽結果各家的總分相同,且這些孩子沒有同時到達終點的,也沒有一家的兩個或三個孩子獲得相連的名次。已知獲第一名的是李家的孩子,獲得第二的是王家的孩子。問獲得最後一名的是誰家的孩子?

輸入

輸出

輸出最後一名的那家的姓的乙個字母且以大寫輸出(若為張家,則輸出z)

樣例輸入

樣例輸出

w總感覺多了一點什麼,不清楚一般人的思路是什麼。

我做這道題目的思路時進行求最優解的思路。

初始化乙個rank陣列,0下標空置,然後下標就是相應的排名。

初始化乙個字元陣列,0~2下標依次為z、w、l,方便最後進行輸出。

使用3進製的儲存方式,不斷進行加一。

每次加一之後,先進性判斷是否會出現兩個或三個相同的姓氏排在一起。

然後進行判斷三家的積分是否相等。

最後進行輸出。

首先進行判斷是否會超限這種說法。

因為題目中給出的樣例輸出是有答案的,所以沒有必要進行判斷陣列是否會超限。

其次是進行判斷是否出現一家的兩個或者三個孩子的名次在一起的情況。

這裡是使用乙個標記flag。0代表出現,1代表沒有出現

化簡之後的**

#include

intmain()

,j=3

,flag;

char s[3]

=;while(1

)}for(j=

1,flag=

1;j<=

7&&flag;j++)if

(rank[j]

==rank[j+1]

||rank[j+1]

==rank[j+2]

) flag=0;

if(!flag)

continue

;int sum[3]

=;for(j=

1;j<=

9;j++)if

(sum[0]

==sum[1]

&&sum[0]

==sum[2]

)}return0;

}

化簡之前的**

#include

intmain()

,i,j=

3,flag;

char s[3]

=;for(i=

3;i<=9;

)}for(j=

1;j<=

7&&flag;j++)if

(rank[j]

==rank[j+1]

||rank[j+1]

==rank[j+2]

) flag=0;

if(!flag)

continue

;int sum[3]

=;for(j=

1;j<=

9;j++)if

(sum[0]

==sum[1]

&&sum[0]

==sum[2]

)}return0;

}

C語言訓練 誰家孩子跑最慢

題目描述 張王李三家各有三個小孩。一天,三家的九個孩子在一起比賽短跑,規定不分年齡大小,跑第一得9分,跑第2得8分,依此類推。比賽結果各家的總分相同,且這些孩子沒有同時到達終點的,也沒有一家的兩個或三個孩子獲得相連的名次。已知獲第一名的是李家的孩子,獲得第二的是王家的孩子。問獲得最後一名的是誰家的孩...

入門訓練 A B問題 c語言

入門訓練 a b問題 問題描述 輸入a b,輸出a b。說明 在 問題描述 這部分,會給出試題的意思,以及所要求的目標。輸入格式 輸入的第一行包括兩個整數,由空格分隔,分別表示a b。說明 輸入格式 是描述在測試你的程式時,所給的輸入一定滿足的格式。做題時你應該假設所給的輸入是一定滿足輸入格式的要求...

C語言訓練 1196 排序問題

problem description 輸入10個整數,將它們從小到大排序後輸出,並給出現在每個元素在原來序列中的位置。input 輸入資料有一行,包含10個整數,用空格分開。output 輸出資料有兩行,第一行為排序後的序列,第二行為排序後各個元素在原來序列中的位置。sample input 1 ...