CF113A Grammar Lessons 題解

一道模擬題。


題目傳送門

題目意思:

給你一個句子,讓你檢查這個句子的語法是否正確。(語法請自行在題目中查看)


思路:

就是模擬。依次判斷這個句子是否符合每一條語法即可。但是細節很多就因為細節我錯了好多次!具體看代碼注釋。


代碼:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
string a[N];
int cnt;
bool fh(string s)//判斷單詞是否合法
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 1;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 1;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 1;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;return 0;
}
bool fx(string s)//判斷單詞的性別
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 1;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 1;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 0;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 0;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 0;
}
int fc(string s)//判斷單詞的詞性
{int len=s.size();s=" "+s;if(s[len]=='s'&&s[len-1]=='o'&&s[len-2]=='i'&&s[len-3]=='l')return 1;if(s[len]=='r'&&s[len-1]=='t'&&s[len-2]=='e')return 2;if(s[len]=='s'&&s[len-1]=='i'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 3;if(s[len]=='a'&&s[len-1]=='l'&&s[len-2]=='a'&&s[len-3]=='i'&&s[len-4]=='l')return 1;if(s[len]=='a'&&s[len-1]=='r'&&s[len-2]=='t'&&s[len-3]=='e')return 2;if(s[len]=='s'&&s[len-1]=='e'&&s[len-2]=='t'&&s[len-3]=='i'&&s[len-4]=='n'&&s[len-5]=='i')return 3;
}
int main()
{while(cin>>a[++cnt]);cnt--;int x=0,y=0;for(int i=1;i<=cnt;i++){if(!fh(a[i]))//不合法直接輸出NO{cout<<"NO";return 0;}if(fx(a[i]))x++;else y++;}if(!((!x&&y)||(x&&!y))){//性別不一樣輸出NOcout<<"NO";return 0;}int num=0;if(cnt==1&&fh(a[1])){cout<<"YES";return 0;}//只有一個合法單詞輸出YESif(cnt==2){//只有兩個單詞的特殊情況if(fc(a[1])==1&&fc(a[2])!=2){//第一個單詞是形容詞但是第二個單詞不是名詞cout<<"NO";return 0;}if(fc(a[1])==2&&fc(a[2])!=3){//第一個單詞是名詞但是第二個單詞不是動詞cout<<"NO";return 0;}if(fc(a[1])==3){//第一個單詞是動詞cout<<"NO";return 0;}cout<<"YES";return 0;}for(int i=2;i<cnt;i++){if(fc(a[i])==1){//如果當前單詞是形容詞if(fc(a[i-1])==1&&(fc(a[i+1])==1||fc(a[i+1])==2))continue;cout<<"NO";//如果形容詞的上一個不是形容詞或者形容詞的下一個不是形容詞或名詞就輸出NOreturn 0;}if(fc(a[i])==2){//如果當前單詞是名詞if(fc(a[i-1])==1&&fc(a[i+1])==3)continue;cout<<"NO";//如果名詞的上一個不是形容詞或者名詞的下一個不是動詞就輸出NOreturn 0;}if(fc(a[i])==3){//如果當前單詞是動詞if((fc(a[i-1])==3||fc(a[i-1])==2)&&fc(a[i+1])==3)continue;cout<<"NO";//如果動詞的上一個不是動詞或名詞,或者動詞的下一個不是動詞就輸出NOreturn 0;}}for(int i=1;i<=cnt;i++)if(fc(a[i])==2)num++;//判斷有多少個名詞if(num!=1&&cnt>1){//有多個名詞就輸出NOcout<<"NO";return 0;}cout<<"YES";//改句子符合語法,輸出YESreturn 0;
}

完美撒花~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/42876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42876.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42876.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據挖掘 | 零代碼采集房源數據,支持自動翻頁、數據排重等

1 前言 城市規劃、商業選址等應用場景中經常會對地區房價、地域價值進行數據分析&#xff0c;其中地區樓盤房價是分析數據中重要的信息參考點&#xff0c;一些互聯網網站上匯聚了大量房源信息&#xff0c;通過收集此類數據&#xff0c;能夠對地區房價的分析提供參考依據。 如何…

216、仿真-基于51單片機溫度煙霧人體感應布防報警Proteus仿真設計(程序+Proteus仿真+原理圖+配套資料等)

畢設幫助、開題指導、技術解答(有償)見文未 目錄 一、硬件設計 二、設計功能 三、Proteus仿真圖 四、原理圖 五、程序源碼 資料包括&#xff1a; 需要完整的資料可以點擊下面的名片加下我&#xff0c;找我要資源壓縮包的百度網盤下載地址及提取碼。 方案選擇 單片機的選…

SpringBoot 讀取配置文件

Spring Boot 中讀取配置文件有以下 5 種方法&#xff1a; 使用 Value 讀取配置文件。使用 ConfigurationProperties 讀取配置文件。使用 Environment 讀取配置文件。 Autowired private Environment environment; 實現EnvironmentAware接口 使用 PropertySource 讀取配置文件…

Python學習筆記_進階篇(一)_淺析tornado web框架

tornado簡介 1、tornado概述 Tornado就是我們在 FriendFeed 的 Web 服務器及其常用工具的開源版本。Tornado 和現在的主流 Web 服務器框架&#xff08;包括大多數 Python 的框架&#xff09;有著明顯的區別&#xff1a;它是非阻塞式服務器&#xff0c;而且速度相當快。得利于…

2023國賽數學建模思路 - 復盤:人力資源安排的最優化模型

文章目錄 0 賽題思路1 描述2 問題概括3 建模過程3.1 邊界說明3.2 符號約定3.3 分析3.4 模型建立3.5 模型求解 4 模型評價與推廣5 實現代碼 建模資料 0 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

衣服材質等整理(時常更新)

參考文章&圖片來源 https://zhuanlan.zhihu.com/p/390341736 00. 天然纖維 01. 化學纖維 02. 聚酯纖維&#xff08;即&#xff0c;滌綸&#xff09; 一種由有機二元酸和二元醇通過化學縮聚制成的合成纖維。具有出色的抗皺性和保形性&#xff0c;所制衣物在穿著過程中不容…

Lua + mysql 實戰代碼

--[[luarocks lua語言的包管理器luasql https://luarocks.org/brew install luarocksluarocks install luasql-mysql 注意此處&#xff0c;如果你是 mariadb&#xff0c;然后要求指定 MYSQL_DIR 參數的時候&#xff0c;千萬不要指到 mariadb 的安裝目錄&#xff0c;而是要指…

linux通過NC工具啟動臨時端口監聽

1.安裝nc工具 yum install nc -y2. 啟動監聽指定端口 #例如監聽8080端口 nc -lk 8080#后臺監聽 nc -lk 8080 &3. 驗證 #通過另外一臺網絡能通的機器&#xff0c;telnet 該機器ip 監聽端口能通&#xff0c;并且能接手數據 telnet 192.xxx.xxx.xx 8080

單機編排docker compose

Docker之旅(8)-單機編排docker compose 當在宿主機啟動較多的容器時候&#xff0c;如果都是手動操作會覺得比較麻煩而且容易出錯&#xff0c; 并且每個容器之間也會有先后啟動的順序依賴等。這個時候推薦使用 docker 單機 編排工具 docker-compose&#xff0c;docker-compose …

爬蟲逆向實戰(十四)--某培訓平臺登錄

一、數據接口分析 主頁地址&#xff1a;某培訓平臺 1、抓包 通過抓包可以發現登錄是表單提交到j_spring_security_check 2、判斷是否有加密參數 請求參數是否加密&#xff1f; 通過查看“載荷”模塊可以發現有一個j_password加密參數 請求頭是否加密&#xff1f; 無響應是…

2024浙大MBA/MEM/MPA四個月沖刺備考策略

近期收到很多考生的咨詢&#xff1a;距離聯考就僅剩四個多月的時間&#xff0c;這個管理類聯考的難度如何&#xff1f;主要考些什么內容&#xff1f;現在才開始備考還有希望上岸浙大嗎&#xff1f;是不是要等到明年在開始備考比較合適&#xff1f;那么今天在這里小立老師就跟大…

Docker Dockerfile 使用方法

目錄 Dockerfile 介紹 創建Dockerfile文件 構建 Docker 鏡像 查看已下載的鏡像 運行 mysql 命令 Dockerfile 介紹 當使用Docker構建容器化應用程序時&#xff0c;Dockerfile是一個用于定義容器鏡像的文本文件。它包含了一系列指令&#xff0c;告訴Docker如何從基礎鏡像&a…

? 將本地已有的項目上傳到 git 倉庫

目錄 ? 將本地已有的項目上傳到 git 倉庫&#x1f3ed; 一、克隆 拷貝&#x1f3a8; 二、強行合并兩個倉庫 ? 將本地已有的項目上傳到 git 倉庫 有兩種方法&#xff1a; ? 一、克隆 拷貝 ? 二、強行合并兩個倉庫 &#x1f3ed; 一、克隆 拷貝 ? 直接用把遠程倉庫拉到本…

CentOS系統環境搭建(十二)——CentOS7安裝Elasticsearch

centos系統環境搭建專欄&#x1f517;點擊跳轉 CentOS 7.9安裝Elasticsearch 7.17.6 文章目錄 CentOS 7.9安裝Elasticsearch 7.17.61.下載2.上傳3.解壓4.調整es占用內存5.修改es默認Java為本地Java6.修改elasticsearch配置文件7.創建用戶8.Elasticsearch 后臺啟動與關閉9.es管…

查看 Linux 內核版本的幾種方法

uname -a uname -srm uname -r 分拆&#xff1a;Linux 5.13.0-19-generic x86 64 5-內核版本 13-主修訂版本 0-19 -次要修訂版本 過查看 /proc/version 文件確認 /proc 目錄包含虛擬文件&#xff0c;其中包含有關系統內存&#xff0c;CPU內核&#xff0c;已安裝文件系統等的信…

020-從零搭建微服務-認證中心(九)

寫在最前 如果這個項目讓你有所收獲&#xff0c;記得 Star 關注哦&#xff0c;這對我是非常不錯的鼓勵與支持。 源碼地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源碼地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

【C#】條碼管理操作手冊

前言&#xff1a;本文檔為條碼管理系統操作指南&#xff0c;介紹功能使用、參數配置、資源鏈接&#xff0c;以及異常的解決等。思維導圖如下&#xff1a; 一、思維導圖 二、功能操作–條碼打印&#xff08;客戶端&#xff09; 2.1 參數設置 功能介紹&#xff1a;二維碼圖片樣…

Windows定時任務計劃無法顯示任務程序界面的問題解決

筆者這兩天寫了一個python腳本程序&#xff0c;用來自動從公司的主數據系統獲取數據&#xff0c;并按格式編制成excel。腳本程序編寫一切順利&#xff0c;運行結果很是完美&#xff0c;筆者很是舒心。但在最后一步&#xff0c;用上班的電腦每天早上定時運行它時&#xff0c;出了…

JAVA設計模式總結之23種設計模式

一、什么是設計模式 設計模式&#xff08;Design pattern&#xff09;是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計…

【Git】Git中的鉤子

Git Book——Git的自定義鉤子 Git中的鉤子分為兩大類&#xff1a; 1、客戶端鉤子&#xff1a;由諸如提交和合并這樣的操作所調用 2、服務端鉤子&#xff1a;由諸如接收被推送的提交這樣的聯網操作 客戶端鉤子&#xff1a; 提交工作流鉤子 pre-commit&#xff1a;在提交信息前…