描述:
明顯…交誼舞是兩個人跳的,而且是一男一女-_-|||……
由於交誼舞之前的節目安排,所有表演者都要站成一排,這一排人的順序滿足兩點。
1⃣️:對於一對舞伴,男生站在女生的左邊。
2⃣️:任何一對舞伴之間,要麼沒有人,要麼有若干對舞伴。
排得過於整齊導致那些要表演的人都沒辦法找到自己的舞伴,怎麼辦呢?
所幸的是,sdfz的女生比男生聰明得多,他們知道自己左邊有幾個男生。現在就請你告訴這些女生,他們的舞伴距離她們多遠(即包括那個男生,一共有多少男生夾在她們中間)。
格式 輸入格式
第一行為乙個數num,表示參與交誼舞的女生個數。
第二行是num行,從左到右表示這num個女生左邊分別由多少個男生。
輸出格式
一排n個數,行末無空格。表示n個女生與其舞伴的距離。
樣例輸入:
6 4 5 6 6 6 6
輸出:
1 1 1 4 5 6
這裡,我想到的方法是,首先經過處理每乙個女生左邊男生數目的資料來進棧,(這個題我們不需要出棧)把所有的男生女生按順序入棧,然後開始查詢女生,找到女生後,就從女生的位置開始向前查詢,找到的第乙個男生且未被別的女生占有的男生即為舞伴,這裡我們用tag表示該男生是否被女生占用。
思路比較清晰,但是這裡面的棧函式要注意,很多細節問題都需要考慮,要根據自己的棧操作函式來對具體問題的邊界進行處理。一開始我一直錯,後來才發現是我的棧函式裡面的邊界和主函式中的不一致導致的。⚠️
**c:
#include
#include
#define maxsize 200
#define ok 1
#define error 0
#define max(a, b) ((a > b) ? (a) : (b))
typedef
int status;
typedef
char selemtype;
//棧結構
typedef
struct
sqstack;
//push
status push (sqstack *s, selemtype e)
s->top++; //棧頂指標加一
s->data[s->top] = e; //將新插入元素
s->tag[s->top] = 1;
return ok;
}pop
//status pop (sqstack *s)
//// s->top--;
// return ok;
//}int main(int argc, const
char * argv)
push(s, ')'); //用)表示女舞者
}// for (i = 1; i < s->top; i++)
//
// printf("%c\n", s->data[s->top]);
//查詢男舞伴
for (i = 2; i <= s->top; i++)}}
}//輸出距離
for (i = 0; i < num - 1; i++)
printf("%d\n", man[num - 1]);
return
0;}
最近我總是感覺自己很盲目,不知道該做些什麼,也許是我的壓力不到位導致的,所以,我要繼續給自己施壓了,資料結構雖然看了一遍,但是沒有很好的應用,導致忘了很多,所以,盡量在去北京參加藍橋杯a組國賽前,再看一遍,細化學習一下資料結構!五月中旬,數學建模;五月底,藍橋盃國賽;六月初,acm省賽。事情真的很多,我不能再耽擱了,但是今天忽然感覺想找個女朋友了!!!天天窩在寢室敲**效率真的不高,經常頭昏腦脹的,不是個學習的樣子,需要勞逸結合了……………………. 模擬 Vijos P1062 迎春舞會之交誼舞
題目大意 一群男女站成一排,一男一女配對,女的只找左邊第乙個空閒的男生,給定前n個女生左邊的額男生個數,問前n個女生到男伴之間共有幾個男生。n 1500 女生左側男生231內 題目思路 模擬 每個女生只找左邊的最靠近的閒置男生,所以每當女生左邊的男生數變化的時候就說明隊伍裡加入了新的男生,而這些男生...
迎春舞會之數字舞蹈
給出數字及其要求擺出的大小,程式設計擺出數字 輸入格式 第一行為k。k表示要擺出數字的大小。第二行為全部由數字組成的字串,即要擺出的幾個數字。輸出格式 注意 每個數字之前有1個空格,所有數字全部對齊。k 30,s的長度不超過255 建議大家直接輸出,不要儲存。如果對於大小和k有疑問,請自行理解。輸入...
P1538 迎春舞會之數字舞蹈
p1538 迎春舞會之數字舞蹈 將數字列印成指定大小的數碼體,大小指的是橫和豎的長度。可以發現,數碼體中,數字都是由七部位組成 上橫,左上豎,右上豎,中橫,左下豎,右下豎,下橫 所以我們先用乙個陣列把從0到9其包含的部位資訊記錄下來,比如g 0 是記錄上橫的,0 有上橫,所以g 0 0 1,而 1 ...