2 条题解

  • 0
    @ 2025-9-7 10:44:30

    讲一下题目里的参考代码怎么用吧:

    // 这里声明了一个字符串数组并全部赋了值,索引从 0 到 25,依次为 A 到 Z 的电码
    // 后面代码的是同样的道理
    string letterMorse[26] = {
        ".-",    // A
        "-...",  // B
        "-.-.",  // C
        "-..",   // D
        ".",     // E
        "..-.",  // F
        "--.",   // G
        "....",  // H
        "..",    // I
        ".---",  // J
        "-.-",   // K
        ".-..",  // L
        "--",    // M
        "-.",    // N
        "---",   // O
        ".--.",  // P
        "--.-",  // Q
        ".-.",   // R
        "...",   // S
        "-",     // T
        "..-",   // U
        "...-",  // V
        ".--",   // W
        "-..-",  // X
        "-.--",  // Y
        "--.."   // Z
    };
    
    string numMorse[10] = {
        "-----",  // 0
        ".----",  // 1
        "..---",  // 2
        "...--",  // 3
        "....-",  // 4
        ".....",  // 5
        "-....",  // 6
        "--...",  // 7
        "---..",  // 8
        "----."   // 9
    };
    
    string dotMorse = ".-.-.-";    // 点号
    string commaMorse = "--..--";  // 逗号
    
    string solve(int len, string oristr) { // 当时为了方便生成测试数据将解法写在 solve 函数里
        string res = "";
        for (int i = 0; i < len; i++) {
            // 如果看不懂下面的代码,就去了解 ASCII 码
            if (oristr[i] >= 'A' && oristr[i] <= 'Z') {
                res += letterMorse[oristr[i] - 'A'];
                // 假设 oristr[i] 为 'B',那么 oristr[i] - 'A' 的值就是 1
                // 故字符串 res 就会加上 letterMorse[1],即字母 B 的电码
            } else if (oristr[i] >= 'a' && oristr[i] <= 'z') {
                res += letterMorse[oristr[i] - 'a'];
            } else if (oristr[i] >= '0' && oristr[i] <= '9') {
                res += numMorse[oristr[i] - '0'];
            } else if (oristr[i] == '.') {
                res += dotMorse;
            } else if (oristr[i] == ',') {
                res += commaMorse;
            } else if (oristr[i] == ' ') {
                res += "/";
            }
            
            if (i < len - 1) {
                res += " ";
            }
        }
        return res;
    }
    
    • 0
      @ 2025-9-6 17:43:01
      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
      	int n,i;
      	cin>>n;
      	char a[n];
      	getchar();// 吃掉输入 n 后的换行符(这真的很重要)
      	gets(a);// 读取整行(包括空格)
      	for(i=0;i<n;i++)
      	{
      		if(a[i]=='A'||a[i]=='a')cout<<".- ";
      		if(a[i]=='B'||a[i]=='b')cout<<"-... ";
      		if(a[i]=='C'||a[i]=='c')cout<<"-.-. ";
      		if(a[i]=='D'||a[i]=='d')cout<<"-.. ";
      		if(a[i]=='E'||a[i]=='e')cout<<". ";
      		if(a[i]=='F'||a[i]=='f')cout<<"..-. ";
      		if(a[i]=='G'||a[i]=='g')cout<<"--. ";
      		if(a[i]=='H'||a[i]=='h')cout<<".... ";
      		if(a[i]=='I'||a[i]=='i')cout<<".. ";
      		if(a[i]=='J'||a[i]=='j')cout<<".--- ";
      		if(a[i]=='K'||a[i]=='k')cout<<"-.- ";
      		if(a[i]=='L'||a[i]=='l')cout<<".-.. ";
      		if(a[i]=='M'||a[i]=='m')cout<<"-- ";
      		if(a[i]=='N'||a[i]=='n')cout<<"-. ";
      		if(a[i]=='O'||a[i]=='o')cout<<"--- ";
      		if(a[i]=='P'||a[i]=='p')cout<<".--. ";
      		if(a[i]=='Q'||a[i]=='q')cout<<"--.- ";
      		if(a[i]=='R'||a[i]=='r')cout<<".-. ";
      		if(a[i]=='S'||a[i]=='s')cout<<"... ";
      		if(a[i]=='T'||a[i]=='t')cout<<"- ";
      		if(a[i]=='U'||a[i]=='u')cout<<"..- ";
      		if(a[i]=='V'||a[i]=='v')cout<<"...- ";
      		if(a[i]=='W'||a[i]=='w')cout<<".-- ";
      		if(a[i]=='X'||a[i]=='x')cout<<"-..- ";
      		if(a[i]=='Y'||a[i]=='y')cout<<"-.-- ";
      		if(a[i]=='Z'||a[i]=='z')cout<<"--.. ";
      		if(a[i]=='0')cout<<"----- ";
      		if(a[i]=='1')cout<<".---- ";
      		if(a[i]=='2')cout<<"..--- ";
      		if(a[i]=='3')cout<<"...-- ";
      		if(a[i]=='4')cout<<"....- ";
      		if(a[i]=='5')cout<<"..... ";
      		if(a[i]=='6')cout<<"-.... ";
      		if(a[i]=='7')cout<<"--... ";
      		if(a[i]=='8')cout<<"---.. ";
      		if(a[i]=='9')cout<<"----. ";
      		if(a[i]==' ')cout<<"/ ";
      		if(a[i]=='.')cout<<".-.-.- ";
      		if(a[i]==',')cout<<"--..-- ";
      	}//暴力冤种解法
      	return 0;
        //另:这玩意真的有普及-的难度吗?
      }
      
      • 1

      [2025 新生训练赛 2] 摩斯电码(Hard ver.)

      信息

      ID
      184
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      33
      已通过
      9
      上传者