列竖式计算的一个代换问题的算法难题,采用C语言如何运算的

Problem Description
As a member of the International Rock-Skipping League, you travel to a different lake each week and compete in a rock-skipping contest. The goal is to throw a rock so that it skips as many times as possible; the exact rules for determining the winner are given below. To make the competitions interesting, the IRSL often chooses lakes with logs, sandbars, and other obstacles. You are provided with a side-view, water-level "map" of the lake as shown in the top line of the example below. (The numbers 0..29 below the map are just for reference.) A period (".") indicates clear water, where a rock will skip; any other character indicates some kind of obstacle that will stop a rock.

...=...**..#...@....:.:.:..=..
______________________________
          11111111112222222222
012345678901234567890123456789 

You stand at the left end of the lake. You can throw a rock so that it lands at any position in the lake, and then skips at any fixed interval thereafter. So a throw can be defined as a pair (i,d), where i ≥ 0 is the initial landing position and d > 0 is the distance between skips. Note that d must be positive. The count of a throw is the number of times that it skips on the water. The length is the position of its last contact with either the water or an obstacle. To rank two distinct throws, use the following criteria, in order, until a winner is determined: count (highest wins); length (greatest wins); initial position (greatest wins); distance between skips (smallest wins).

For the map shown above, throw (27,2) hits the obstacle at position 27; it has count 0 and length 27. Throw (16,1) skips at positions 16, 17, 18, and 19, then hits the obstacle at position 20; it has count 4 and length 20, so it beats throw (27,2). Throw (2,7) skips at positions 2, 9, 16, and 23, then skips over the lake; it has count 4 and length 23, so it beats throw (16,1). Throw (1,4) skips at positions 1, 5, 9, 13, 17, 21, 25, and 29, then skips over the lake; it has count 8 and distance 29, and is the best possible throw for this lake.

Input
The input consists of one or more lake maps, each 1–40 characters long and on a line by itself, followed by a line containing only "END" that signals the end of the input. Positions within a map are numbered starting with zero. Maps will only contain printable ASCII punctuation characters. A period indicates clear water and any other character indicates an obstacle.

Output
For each map, compute the best possible throw (i,d), then output a line containing i and d separated by one space.

Sample Input
...=...**..#...@....:.:.:..=..
.(+)
/^.
++&
END

Sample Output
1 4
0 3
3 1
4 1

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言《竖式问题》
问题描述: 找出所有形如“abc*de”(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序应该输出空格,而非小数点)。 样例输入: 2357 样例输出: 题目分析: 因为题目需要打印出每...
竖式问题~c语言
#include<stdio.h> #include<string.h> int main() {     int i,j,count=0;     int x,y,z;     char s[20],buf[99];     scanf("%s",s);     for(i=111;i<=999;i++)         for(j=11;j<=99;j++)...
竖式问题 C语言
题目: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 我刚开始看不懂这个题目,所以上论坛搜了一下,下面这个人的回答还是很清楚的...
C语言 竖式问题 模拟竖式
竖式问题。找出所有形如 abc∗deabc*de (三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。样例输入: 2357 样例输出: <1> ..775 X..
除法列竖式
这个资源很有用哦,祝各位老师教学愉快。有好东西大家一起分享
竖式计算
Written by Robert_Wang in Southwest University of Science And Technology.分析:这个就是模仿我们小学学的乘法。。。。。如:要求是:找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最...
每天一点C语言--竖式问题
这里是《剑指offer》PDF下载链接,欢迎一起进步的同学下载学习! 剑指offer高清完整版PDF下载 找出所有形如abc*de的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻无空格),输出所有竖式。每个竖式前有标号,后有空行,最后输出解的总数。 例如: 输入: 2357 输出: <1> ..775 X..33
算法-高精度(人工竖式)
高精度加法#include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> using namespace std; int main(){ //freopen("codevs3116.in","r",stdin); //freopen("codevs3116.out","w",stdout);
竖式问题
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为: char * strchr (const char *str, char c);【参数】str 为要查找的字符串,c 为要查找的字符。strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以
例题:竖式问题
例:找出所有形如abc*de(三位数乘以两位数,均非零。)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 样例输入:2357 样例输出:<1> ..775 X..33 ---
3-4竖式问题
题目: 找出所有形如abc*de的算式;  竖式中的数字都是输入的字符串中的数字;  输入:2357 输出:   775 X 33 -----  2325 2325 ----- 25575 思路:尝试所有的abc和de,判断是否满足条件; #include #include int main(){ freopen("input.txt","r",stdin)
竞赛算法第二版--竖式问题
竖式问题。找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。 样例输入: 2357                (可以看做一个集...
竖式问题(JAVA语言)
package 第三章;import java.util.Scanner;public class 竖式问题 { public static void main(String[] args) { // TODO Auto-generated method stub String s; Scanner in=new Scanner(System.in); s=in.next(); for(...
字符数组:竖式问题
竖式问题 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应该有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。 样例输入: 2357 样例输出: &amp;lt;1&amp;gt; ..775 X....
3-3竖式问题
题目:找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。样例输入:2357样例输出:<1>..775X..33.23252325.2557
【看书】竖式问题
问题描述: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
字符串操作-竖式问题
问题描述: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 样例输入:2357 ...
算法入门\简单模拟\竖式问题
竖式问题题目(自述):一开始,我连题目都没看懂。。啧啧,后来研究了一下输出,才晓得。大概是这样的(我就不copy原题目了,浪费笔油,hhhhhhhh)输入:一串数字处理:找三位数乘以两位数(abc*de),在做乘法运算的时候涉及到的数字即为输入的那一串数字,如     775   x   33 ————————     2325 + 2325 ________   25575      ...
9.竖式问题
问题: 找出形如 abc*de (三位数乘以两位数) 的算式,使得在完整的竖式中,所有数字属于一个特定的数字集合。输入数字集合 (相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。 解决: #include&amp;quot;stdio.h&amp;quot; #include&amp;quot;string.h&amp;quot; using namespace std; int main() { int count ...
竖式问题(P42)
见注释。。。。。。 (C语言) #include #include #include #include int main() { char s[20],buf[100]; int abc,de; int count = 0,is_shushi,i; int x,y,z; scanf("%s",s); for(abc = 111;abc
算法入门竞赛:竖式问题
最近在看刘汝佳的这本紫书,看到这个竖式问题,有点不太明白,就是循环的初始条件为什么是111和11,不是100和10呢? 下边贴上源码: #include #include int main() { int count = 0; char s[20], buf[99]; scanf("%s", s); for (int abc = 111; abc <= 999; abc++)//
竖式问题(乘法)
问题: 输入一个数集。找出所有形如abc*de(三位数乘以两位数)的算式。使得在完整的竖式中,所有数字都属于一个特定的数字集合(全由数集中的数字组成) 输出数字集合(相邻数字之间无空格)。 本文提供2种方法。请读者选择自己喜欢的方法。 第一种是作者自己编写的。比较繁琐。 第二种是在书籍上摘抄的。这种方法比较简单,容易理解,可读性强 第一种: //竖式问题 //作者是将大多数计算数据
3_2 竖式问题
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。 样例输入: 2357 样例输出: &lt;1&gt; ..775
竖式
题目描述 找出所有形如abc*dc(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。 例如,当该数字集合为2357时,只有一个竖式满足条件,该竖式中出现的所有数字都属于集合2357,该竖式为(*表示空格): 775 X33 …----- *2325 2325 …----- 25575 输入 输入包括多行数据,每行一个正整数,表示该数字集合 输出 对每行输入,输...
一个c语言难题
编的一个c语言函数:rn大概是这样的:实现对c语言文件进行检查,计算其中包含的空行数,注释数,代码数!rn现在我碰到的问题是 如何辨别函数rn我采用的是利用堆栈来存每个函数中“”以及“”,当堆栈为空时 则表明一个函数结束了 ,同样利用这样的方法对没一个函数进行处理!rn但是现在除了问题是 每个函数的第一句并不是“”或者“”rn于是利用堆栈空来判断函数结束 好象实现不了rncode:rnwhile(!feof(fp)) //文件指针是不是到最后了rn //这以后我就不会写了 请高手帮忙rn if (stackempty(s)==1)rn flag=0;rn q=(struct funmsg*)malloc(sizeof(struct funmsg));rn q->code=0;rn q->comment=0;rn q->blank=0;rn q->next=NULL;rn h->next=q;rn last=q;rn printf("malloc successful!\n");rn rn elsern flag=1;rn while((stackempty(s)==1)||(flag==0))rn rn i=0;rn ch=fgetc(fp);rn while(ch!='\n')rn rn if(ch==32)rn ch=fgetc(fp);rn else if(ch!=32)rn *(str+i)=ch;rn i++;rn ch=fgetc(fp);rn rn rn *(str+i)='\0';rn judge(str,last);//判断是空行,还是注释还是 代码行rn rnrn rn
C语言。一个难题。
我的需求是这样的,有一个方法rnrnint* readTxt()rnrn int arr[]=[读取文本里的学生成绩,你不必关心怎么实现的,且往下看]; rn return arr;rnrnrnmain()rnrn int *p=readTxt();rn //问题是我想在这里遍历这个数组,可是怎么获取readTxt返回的数组的size??rnrnrnrn首先要明白我必须在除了readTxt以外的方法中进行遍历,并且这个数组只能以返回值的方式提供给外界遍历。rnrn不符合要求的就别劳您大驾了。rnrn万分感谢感激不尽
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法