Codeforces Round #376A (div2)

来源:http://www.cnblogs.com/lxmwb/archive/2016/10/24/acm.html
-Advertisement-
Play Games

【轉盤游戲】有一個轉盤,26個英文字母均勻分佈在轉盤邊緣,轉針初始位置在字母a,每次只能轉動到相鄰的字母,然後輸入一個由26個字母組成的字元串(最長100),不複位地依次轉動到相應的字母位置,問:一共需要轉多少次?編程實現。 Input:   輸入一個字元串,最長100,由26個英文字母組成。... ...


Night at the Museum

題意:

有一個轉盤,26個英文字母均勻分佈在轉盤邊緣,轉針初始位置在字母a,每次只能轉動到相鄰的字母,然後輸入一個由26個字母組成的字元串(最長100),不複位地依次轉動到相應的字母位置,問:一共需要轉多少次?編程實現。

Input:

  輸入一個字元串,最長100,由26個英文字母組成。

Output:

  輸出需要轉動的次數(整數)。

 

解題思想:

由於一圈字母中“..za..”段是不連續的,所以需要分情況討論,我是這麼分的:

以轉針所指字母pointer和圓心連線為軸,軸右側(即<pointer,pointer+13或pointer-13>),除了轉針指向‘a’時,其它時刻軸兩側肯定有一側字母連續  另一側字母無法連續(包含"za"串) 。

軸左右指的是將軸豎直放置,轉針一頭在上,此時的左右側 。

不難看出pointer以‘n’為界限,小於‘n’時不連續段在軸左側,大於‘n’時不連續段在軸右側。如下圖:

最後代碼:

 

 1 # include <iostream>
 2 # include <string> 
 3 using namespace std; 
 4 
 5 int main(void)
 6 {
 7     int clockLetter(string c);
 8     string s;
 9     int numStep;
10     cin >> s;
11 
12     numStep = clockLetter(s);
13     
14     cout << numStep << endl;
15     return 0;
16 }
17 
18 int clockLetter(string c)
19 {
20     int n = 0;    // 步數,初值為0 
21     int i; 
22     char pointer = 'a';   // 轉針初始值為‘a’ 
23     
24     for(int i=0;i<c.length();i++)
25     {    // 以轉針所指字母和圓心連線為軸,軸右側(即<pointer,pointer+13或pointer-13>),除了轉針指向‘a’時,其它時刻軸兩側肯定有一側字母連續  另一側字母無法連續(包含"za"串) 。 
26         // 軸左右指的是將軸豎直放置,轉針一頭在上,此時的左右側 
27         if(pointer <= 'n')                                       // 此時軸左側字母不連續  
28         {
29             if(c[i]>=pointer&&c[i]<=pointer+13)                  // 連續段 
30             {
31                 n += c[i]-pointer;
32             }
33             else if(c[i]>pointer+13)                             // 不連續段 1 
34             {
35                 n += 26 - (c[i]-pointer);
36             } 
37             else if(c[i]<pointer)                                // 不連續段 2 
38             {
39                 n += pointer-c[i];
40              } 
41         }
42         else if(pointer > 'n')                                   // 此時軸右側字母不連續 
43         {
44             if(c[i]<=pointer&&c[i]>=pointer-13)                  // 連續段 
45             {
46                 n += pointer-c[i];
47             }
48             else if(c[i]>pointer)                                // 不連續段 3
49             {
50                 n += c[i] - pointer;
51             }
52             else if(c[i]<pointer-13)                             // 不連續段 4 
53             {
54                 n += 26 - ( pointer - c[i] );
55             }
56         }
57         
58         pointer = c[i];       // 在轉下一個字母的時候,讓指針停在當前位置,不複位 
59     }
60     
61     return n;
62 }
C++ Code

 

 

 

結果測試:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文檔目錄 本節內容: 簡介 關於ISettingStore 定義設置 setting scope(設置範圍) 重寫設置定義 獲取設置值 服務端 客戶端 修改設置 關於緩存 關於ISettingStore setting scope(設置範圍) 重寫設置定義 服務端 客戶端 簡介 每個應用必需存儲一些 ...
  • 在Common中新建一個CookieHelper,全局調用 ...
  • 隨著項目深入,需要移植到安卓上,問題來了,QML安卓適配! 幸好PC端程式和手機屏幕長寬比例相似。雖然單位像素,尺寸不同,通過比例縮放,可以實現組件PC和安卓通用代碼。 第一步:定義全局的轉換函數(300,500是你的PC端設計尺寸) 第二步:將所有相關尺寸的都通過上面的轉換函數計算新值 第三步:對 ...
  • php採集神器CURL使用方法詳解 php採集神器CURL使用方法詳解 作者:佚名 更新時間:2016-10-21 作者:佚名 更新時間:2016-10-21 作者:佚名 更新時間:2016-10-21 對於做過數據採集的人來說,cURL一定不會陌生。雖然在PHP中有file_get_content ...
  • 首先我們要JavaWeb登陸的基本流程:JSP頁面發送請求——>Servlet——>Servlet通過調用方法從資料庫中得到數據並將結果返回頁面 我們先建立三個jsp頁面,包括login.jsp(登陸頁面)、index.jsp(顯示登陸成功後的信息)、error.jsp(登錄失敗的頁面),其中後兩個 ...
  • 1 概述 在進行ESB集成項目中,使用到了很多系統的介面,這些介面傳輸的數據大部分都採用了XML的格式,這樣在使用ESB開發服務時就需要對XML數據進行解析或拼接的操作,本文以項目中流程服務為例,講解一些常用的Dom4j對XML的操作。 2 名詞解釋 Dom4j:一個Java的XML API,用來讀 ...
  • 做python項目,需要用到mysql,一般用python-mysql,安裝時遇到錯誤提示如下: Command "python setup.py egg_info" failed with error code 1 Trace的關鍵信息是:sh: mysql_config: command not ...
  • 測試在進行一次性能測試的時候發現併發300個請求時出現了下麵的異常: HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: unable to create new n ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...