哨兵变量flag不小心没 设置成0。。所以一直WA

9502 ARDF

时间限制:1000MS  内存限制:65535K
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC

Description

    ARDF,全称无线电测向。无线电测向运动是竞技体育项目之一,也是无线电活动的主要内容。它类似于众所周知的捉迷藏游戏,但它是寻找能发射无线电波的小型信号源(即发射机),
是无线电捉迷藏,是现代无线电通讯技术与传统捉迷藏游戏的结合。大致过程是:在旷野、山丘的丛林或近郊、公园等优美的自然环境中,事先隐藏好数部信号源,定时发出规定的电报信号。
参加者手持无线电测向机,测出隐蔽电台的所在方向,采用徒步方式,奔跑一定距离,迅速、准确地逐个寻找出这些信号源。以在规定时间内,找满指定台数、实用时间少者为优胜。
通常,
我们把实现巧妙隐藏起来的信号源比喻成狡猾的狐狸,故此项运动又称无线电“猎狐”或抓“狐狸”。
    摩斯密码是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。摩斯密码中,-表示长,.表示短。
摩斯密码表示两个字元是采用直接相连法,即直接将第二个字元的摩斯密码接到第一个字元摩斯密码的后面。一连串的摩斯密码连成一起,就是要发送的信号。
    无线电测向分为2米波段和80米波段,区别在于电波的波长不同,接收用的机器也不同。
而信号源发出的信号为摩斯密码,测向运动两个波段对应的摩斯密码如下:
    号码  2米波段  80米波段
    0     -----    -----
    1     .----    -- ---.
    2     ..---    -- ---..
    3     ...--    -- ---...
    4     ....-    -- ---....
    5     .....    -- ---.....
    6     -....    -....
    7     --...    --...
    8     ---..    ---..
    9     ----.    ----.
    BM是测向新手,对于辨别信号,信号源定位等方法都不太熟悉。现在,又到训练时间了。教练让BM拿了一部测向机在听信号,以训练辨别信号的能力。
不过,变态的教练不仅要BM分辨每个信号源对应是什么数字,还问这两个数字之和对应的摩斯密码是什么!但是,BM却不知道这是哪个波段的信号,又还没有记熟每个号码对应的摩斯密码,咋办?
答不出可是要罚跑华农一圈啊!!!
    Arokenda在训练过程中不忍心看着BM就这样受罚,就帮了BM一把,给了BM一个摩斯密码对应表和破译多位数的方法,说将两个数变成整数再算。
但是听到某一信号时,BM听了很久还没听完。惨了!数位太多,int存不下,这次又咋办?
    Arokenda说:“还不简单,用long long不就行了吗?long long可以表示-2^63至2^63-1之间的整数,而且又没有double只保留16位精度的问题。就像这样:
    #include<stdio.h>
    int main()
    {
     long long a;
     scanf(“%lld”,&a);
     printf(“%lld”,a);
     return 0;
    }
    就在此时,教练发现他们俩的作弊行为!不解释,罚跑运动场3圈!@#$%^&*
    训练还得继续,面对这魔鬼式训练,BM忍不住向大家求救!你能帮一下BM吗?

输入格式

    输入一个整数T(T<=20),表示教练员有几次测试。
    接下来3行,第一行为一个整数W,表示该信号源是属于哪个波段,2或80。第二、三行为一串摩斯密码,长度不超过90,表示BM听到的两个信号源对应的信号。

输出格式

    每组数据输出一行,输出两个信号源对应数字之和在相应波段下的摩斯密码。

输入样例

5
2
.----
-....
80
-- ---.
-- ---...
80
-- ---....
---..

输出样例

--...
-- ---....
-- ---.-- ---..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s2[12][50]={{"-----"},{".----"},{"..---"},{"...--"},{"....-"},{"....."},{"-...."},{"--..."},{"---.."},{"----."}};
char s80[12][50]={{"-----"},{"-- ---."},{"-- ---.."},{"-- ---..."},{"-- ---...."},{"-- ---....."},{"-...."},{"--..."},{"---.."},{"----."}};
void pr (long long int n,int i)
{char str[1000][100]={0};int h=0;int j;if (i==2){while (n/10>0)//这里先判断他有没有10位。//这样,就避免了他是0的情况{strcpy(str[h++],s2[n%10]);n /= 10;}strcpy(str[h],s2[n]);//加上最后一位for (j=h;j>=0;j--){printf ("%s",str[j]);}printf ("\n");}else{while (n/10>0){strcpy(str[h++],s80[n%10]);n /= 10;}strcpy(str[h],s80[n]);for (j=h;j>=0;j--){printf ("%s",str[j]);}printf ("\n");}return ;
}
void work()
{int m;scanf ("%d",&m);char str1[100]={0};char str2[100]={0};getchar();//接收上面M的那个回车//就是scanf("%d",&m)的回车gets(str1);gets(str2);//gets 有吃回车的功能/*printf ("%s\n",str1);printf ("%s\n",str2);*/int i;int len1 = strlen(str1);int len2 = strlen(str2);char str_next[100]={0};//用来判断下一个//用于判断80那里的。有重复的嫌疑char str_temp[100]={0};int h=0;int j;int f=0;int flag;long long int number1=0;long long int number2=0;//long long int sum = number1+number2;if (m==2){for (i=0;i<len1;i++){str_temp[h++] = str1[i];//一个一个字符处理,力求取最大的flag=0;for (j=0;j<10;j++){str_temp[h]='\0';if (strcmp(str_temp,s2[j])==0){if (i!=len1-1){strcpy(str_next,str_temp);str_next[h]=str1[i+1];str_next[h+1]='\0';for (f=0;f<10;f++){if (strcmp(str_next,s2[f])==0)//如果再取多一个字符,它是存在的//那么就选最长得那个{flag=1;break;}}}else flag = 0;if (!flag){number1 = number1*10+j;h=0;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof(str_next));}}}}h=0;flag=0;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof (str_next));for (i=0;i<len2;i++){str_temp[h++] = str2[i];flag=0;//记得是设置为0//刚开始就是一个没设置为0//一直WA//0代表他再取一个字符,//str_next 不存在于s2中for (j=0;j<10;j++){str_temp[h]='\0';if (strcmp(str_temp,s2[j])==0){if (i!=len2-1){strcpy(str_next,str_temp);str_next[h]=str2[i+1];str_next[h+1]='\0';for (f=0;f<10;f++){if (strcmp(str_next,s2[f])==0){flag=1;break;}}}else flag=0;if (!flag){number2 = number2*10+j;h=0;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof(str_next));}}}}pr(number1+number2,2);}else{h=0;flag=0;for (i=0;i<len1;i++){str_temp[h++] = str1[i];flag=0;for (j=0;j<10;j++){str_temp[h]='\0';if (strcmp(str_temp,s80[j])==0){if (i!=len1-1){strcpy(str_next,str_temp);str_next[h]=str1[i+1];str_next[h+1]='\0';for (f=0;f<10;f++){if (strcmp(str_next,s80[f])==0){flag=1;break;}}}else flag=0;if (!flag){number1 = number1*10+j;h=0;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof(str_next));}}}}h=0;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof(str_next));for (i=0;i<len2;i++){str_temp[h++] = str2[i];flag=0;for (j=0;j<10;j++){str_temp[h]='\0';if (strcmp(str_temp,s80[j])==0){if (i!=len2-1){strcpy(str_next,str_temp);str_next[h]=str2[i+1];str_next[h+1]='\0';for (f=0;f<10;f++){if (strcmp(str_next,s80[f])==0){flag=1;break;}}}else flag=0;if (!flag){number2 = number2*10+j;memset(str_temp,0,sizeof(str_temp));memset(str_next,0,sizeof(str_next));h=0;}}}}pr(number1+number2,80);}return ;
}
int main()
{int t;scanf ("%d",&t);while (t--){work();}return 0;
}

  我的思路是:每个字符地处理,符合的最长串才操作。。

WA我太久了。。告诉同学们。。测试程序的话,,自己想些特殊数据,别太依赖样例

我是用5555DEBUG出来的

转载于:https://www.cnblogs.com/liuweimingcprogram/p/5034361.html

scau 9502 ARDF一个变量的问题相关推荐

  1. SCAU 9502 ARDF

    9502 ARDF 时间限制:1000MS  内存限制:65535K 提交次数:0 通过次数:0 题型: 编程题   语言: 无限制 Description ARDF,全称无线电测向.无线电测向运动是 ...

  2. 方法 retrun 异步的值,创建一个变量直接等于一个异步方法返回的值

    需求:我想创建一个变量,他的值是一个openid, openid 从 getOpenid (封装的一个异步方法) 里面返回,通常调用 getOpenid ,会返回一个Promise 对象,.then ...

  3. adoquery查询结果如何赋给一个变量(delphi和c++ builder)

    我用的是adoquery进行数据库查询,但是我不想把查询的结果显示出来,只是想赋给一个变量,请问我这个变量该怎样去设置呢 ?  回复人:sunriver 回复时间:2005-6-3 9:11:00 p ...

  4. R语言ggplot2可视化散点图并添加平滑曲线、WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例)

    R语言ggplot2可视化散点图并添加平滑曲线.WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例) 目录

  5. python定义一个变量_Python新手上车3:Python第一个程序和变量

    第一个程序 上节内容我们提到了如何安装Python 以及安装配置VSCode,这节内容我们继续介绍第一个程序的建立: 1.在VS的左上角点击建立一个新的程序,命名为 python_0301_code. ...

  6. 如果你要对一个变量进行反向传播,你必须保证其为Tensor

    loss.backward()             optimizer.step() 上面两语句是成对使用才有效果的,第一句反向传播误差过程中会调整模型的参数权重W及偏置b,反向传播一次后,整个模 ...

  7. var_export-输出或返回一个变量的字符串表示

    var_export - 输出或返回一个变量的字符串表示. mixed var_export ( mixed $expression [, bool $return ] ) 此函数返回关于传递给该函数 ...

  8. php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  9. 汇编伪指令EVEN(数据对齐的伪指令,使得下一个变量的起始地址是偶数字节的)

    EVEN伪操作使下一个变量或指令开始于偶数字节地址.ALIGN伪操作为保证双字类型数组边界从4的倍数开始创造了条件. ALIGN: 指定对齐边界 align 4 ;让下一个变量的起始地址保证是 4 的 ...

最新文章

  1. 竖直菜单 html,jQuery实现的网页竖向菜单效果代码
  2. 指挥控制系统中的自然智能和人工智能
  3. C++设计模式--模板方法模式
  4. Mysql的coalesce
  5. rmi远程反序列化rce漏洞_Oracle WebLogic 反序列化远程命令执行漏洞预警
  6. 继承中的复制构造、赋值、析构、重载
  7. Android 系统(181 )----Android中各类.mk文件的编写
  8. YAML的扩展名是.yaml还是.yml?
  9. 【报告分享】中国电信5G行业场景案例集.pdf(附下载链接)
  10. hdu1113 Word Amalgamation(详解--map和string的运用)
  11. Github删除一个无用库
  12. k620显卡linux驱动下载,NVIDIA英伟达Quadro系列专业显卡官方驱动
  13. Fences -让你的桌面图标分组显示,成块状化
  14. helper java_请教问题,helper类在java中的作用。
  15. MySql-STDEV、STDEVP、VAR、VARP
  16. 「BIND9」- DLZ(Dynamically Loadable Zones) @20210212
  17. 【正点原子FPGA连载】第十九章IP核之双端口RAM实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
  18. Facebook在美上线相亲功能,微软AI成为麻将冠军!...|一周热闻回顾
  19. 【RST笔记6】scheduler
  20. wannacry 专杀_蠕虫勒索软件专杀工具

热门文章

  1. 刷脸和指纹识别out啦,这些公司正在用静脉识别技术颠覆金融业
  2. 【百科】前端/後端、前台/後台的英文選擇(反推法)
  3. Android audio介绍
  4. C语言的概述和发展历史(C语言编程之旅)
  5. 怎样给黑白照片上色?这篇文章来教你
  6. 编程基础 | 四种常见的 POST 提交数据方式
  7. OBD 诊断与 UDS 诊断有什么区别?
  8. 新药韦立得(TAF),乙肝抗病毒药是通过作用于病毒繁殖复制时期以杀死病毒
  9. python dialogflow_如何在Python中通过Dialogflow实现从Google Assis...
  10. ios之Xcode 快捷键大全/使开发更高效