日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通 1148:连续出现的字符 | OpenJudge NOI 1.9 11

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通 1148:连续出现的字符 | OpenJudge NOI 1.9 11 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目鏈接】

ybt 1148:連續出現的字符
OpenJudge NOI 1.9 11:連續出現的字符

【題目考點】

1. 字符串處理

2. 數值統計

【題解代碼】

解法1:比較相鄰字符

#include<bits/stdc++.h> using namespace std; int main() {int k, cn = 1, len;//cn:字符連續出現的次數 cin>>k;char s[2505];cin>>s;if(k == 1)//如果k為1,為特例。 {cout<<s[0];//直接輸出第0個字符,即為連續出現1次的字符 return 0;}len = strlen(s);for(int i = 1; i < len; ++i){if(s[i] == s[i-1])//如果現在看的字符和前一個字符相同 {cn++;//那么字符連續出現,連續出現的次數加1 if(cn >= k)//如果已經連續出現k次 {cout<<s[i];//輸出這個字符 return 0;//結束程序 }}else//如果當前字符與前一個字符不同cn = 1;//那么重新開始計數,當前字符連續出現1次 }cout<<"No";//如果沒有能達到連續出現k次的情況,輸出No return 0; }

解法2:設一個變量,用于表示當前關注的連續字符

#include<bits/stdc++.h> using namespace std; int main() {int k, ct, len; cin>>k;char s[2505], c;//c:當前關注的,在連續出現的字符 cin>>s;c = '\0';//c的初始值如果是'\0',則一定不會與s[0]相同,因而第一次循環時會執行else下的語句段,為c與ct賦初值 len = strlen(s);for(int i = 0; i < len; ++i){if(s[i] == c)//如果當前看的字符s[i]與關注的字符c相同 ct++;//計數加1 else//如果看到與c不同的字符(第一次循環,i為0時,也會走這里) {c = s[i];//改變關注的字符為s[i] ct = 1;//重新計數 }if(ct >= k)//如果已經連續出現k次 {cout<<c;return 0;}}cout<<"No";return 0; }

總結

以上是生活随笔為你收集整理的信息学奥赛一本通 1148:连续出现的字符 | OpenJudge NOI 1.9 11的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。