程式設計思維與實踐 Week12 CSP M3

2021-10-06 20:59:55 字數 2969 閱讀 5902

解題思路

題目**

b - 消消樂大師——q老師

解題思路

題目**

c - 咕咕東學英語

解題思路

題目**

瑞神的數學一向是最好的,連強大的咕咕東都要拜倒在瑞神的數學水平之下,雖然咕咕東很苦

惱,但是咕咕東拿瑞神一點辦法都沒有。

5.1期間大家都出去玩了,只有瑞神還在孜孜不倦的學習,瑞神想到了乙個序列,這個序列長度為 ,也就是一共有 個數,瑞神給自己出了乙個問題:數列有幾段?

段的定義是連續的相同的最長整數序列

輸入第一行乙個整數n,表示數的個數 接下來一行n個空格隔開的整數,表示不同的數字

輸出一行,這個序列有多少段

12

3 233666114514

8
讀入資料,如果是第乙個數則將統計變數count置1,並用prev變數記錄前乙個數

如果前乙個數和當前數不同,統計變數count增1

最後輸出統計變數count的值。

#include

#include

using

namespace std;

const

int maxn=

3000

;int a[maxn]

,n;int

main()

else}}

cout<}return0;

}

輸入第一行包含兩個整數n,m,表示行數和列數 接下來n行m列,每行中數字用空格隔開,每個數字代表這個位置的棋子的顏色。數字都大於0.

輸出n行m列,每行中數字用空格隔開,輸出消除之後的棋盤。(如果乙個方格中的棋子被消除, 則對應的方格輸出0,否則輸出棋子的顏色編號。)

4 5

2 2 3 1 2

3 4 5 1 4

2 3 2 1 3

2 2 2 4 4

2 2 3 0 2

3 0 0 0 0

2 3 2 0 3

2 2 0 0 0

為了方便處理解決行列交叉都被消除的情況,引入兩個二維陣列a,b. 讀取資料存放在a陣列中並將資料複製到b陣列中。先對a陣列進行行遍歷,如果有出現三個以上連續的數字就將其置0。接著,對於b陣列進行列遍歷,進行同樣的操作。

輸出答案:如果a和b陣列中有乙個為0,則輸出0.

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

100;

int a[maxn]

[maxn]

,b[maxn]

[maxn]

;int n,m;

intmain()

}for

(int i=

0;ipre=a[i]

[j];

counter=1;

}else}if

(counter>=3)

}}for(

int i=

0;ipre=b[j]

[i];

counter=1;

}else}if

(counter>=3)

}}for(

int i=

0;i)else

if(j==0)

else

}cout<}return0;

}

咕咕東很聰明,但他最近不幸被來自宇宙的宇宙射線擊中,遭到了降智打擊,他的英語水平被歸

零了!這一切的始作俑者宇宙狗卻毫不知情!

此時咕咕東碰到了乙個好心人——tt,tt在吸貓之餘教咕咕東學英語。今天tt打算教咕咕東字母a 和字母b,tt給了咕咕東乙個只有大寫a、b組成的序列,讓咕咕東分辨這些字母。

但是咕咕東的其他學科水平都還在,敏銳的咕咕東想出乙個問題考考tt:咕咕東問tt這個字串 有多少個子串是 delicious 的。

tt雖然會做這個問題,但是他吸完貓發現輝夜大小姐更新了,不想回答這個問題,並拋給了你, 你能幫他解決這個問題嗎?

delicious 定義:對於乙個字串,我們認為它是 delicious 的當且僅當它的 每乙個字元都 屬於乙個 大於1 的 回文子串 中。

輸入第一行乙個正整數n,表示字串長度 接下來一行,乙個長度為n只由大寫字母a、b構成的字串。

輸出僅一行,表示符合題目要求的子串的個數。

5

aabbb

6
本題採用「暴力求解」的方法只能通過部分資料點。

本題思路「正難則反」,先求出所有非法情況,將所有情況-非法情況。

非法情況主要是a+連續b,b+連續a,連續b+a,連續a+b四種情況。

只需要正序和逆序兩次遍歷字串就可以求出上述兩種情況。

注意:其中ab會被計算兩次需要減去一半。

#include

#include

using

namespace std;

unsigned

long

long counter,pre,n;

intmain

(int argc,

const

char

* ar**)

}pre=l.

size()

-1;for

(int i=l.

size()

-2;i>=

0;i--)}

cout<<

(n-1

)*n/

2-counter;

return0;

}

程式設計思維與實踐 week3

題目 題意 給定n個正整數,要求選出k個數,使選出來的k個數和為sum,共有多少個方案?輸入 第一行乙個數t t 100 表示有t組測試資料。接下來的兩行,一行有三個數n,k,s,一行有n個正整數。輸出 每組資料輸出乙個和為s的方案個數,每組佔一行。思路 dfs 可行性剪枝 子集列舉問題。列舉所有子...

程式設計思維與實踐 week15

題目 題意 zjm 為了準備霍格沃茲的期末考試,決心背魔咒詞典,一舉拿下咒語翻譯題 題庫格式 魔咒 對應功能 背完題庫後,zjm 開始刷題,現共有 n 道題,每道題給出乙個字串,可能是 魔咒 也可能是對應功能 zjm 需要識別這個題目給出的是 魔咒 還是對應功能,並寫出轉換的結果,如果在魔咒詞典裡找...

程式設計思維與實踐 Week12 作業C 區間DP

輸入m,輸入n。後面跟著輸入n個ai 輸出最大和。樣例 輸入 1 3 1 2 3 2 6 1 4 2 3 2 3 輸出 6 8考慮狀態dp i j 表示在選取第j個數的時候,前面的數分成i組的最大和。狀態轉移方程為 dp i j max,其中dp i j 1 表示前面j 1的已經分為i組了,加入a ...