08-2. 求矩阵的局部极大值(15)
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第1行中给出矩阵A的行数M和列数N(3<=M,N<=20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5
//08-2 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int m,n,i,j; int a[21][21]; scanf("%d%d",&m,&n); for(i=0;i<m;i++) { for(j=0;j<n;j++) scanf("%d",&a[i][j]); } int flag=0; for(i=1;i<m-1;i++) { for(j=1;j<n-1;j++) { if(a[i][j]>a[i-1][j]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i][j+1]) { flag=1; printf("%d %d %d ",a[i][j],i+1,j+1); } } } if(flag==0) { printf("None %d %d ",m,n); } return 0; }
08-3. 组个最小数 (20)
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
//08-3 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int num,i,j,a[20]; for(i=0;i<10;i++) { scanf("%d",&num); a[i]=num; } for(i=0;i<10;i++) { if(a[i]!=0) { if(i!=0) { printf("%d",i); a[i]--; break; } } } for(i=0;i<10;i++) { if(a[i]!=0) { for(j=1;j<=a[i];j++) { printf("%d",i); } } } printf(" "); return 0; }
10-0. 说反话 (20)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:Hello World Here I Come
输出样例:
Come I Here World Hello
//10-0 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char a[100]; int b[100]; gets(a); int len=strlen(a),i,j,k=0,flag=0; for(i=0;i<len;i++) { if(a[i]==' ') b[flag++]=i; } for(i=len-1;i>=0;i--) { for(j=b[flag-1]+1;flag-1>=0&&j<=i;j++) { printf("%c",a[j]); } if(flag!=0) { printf(" "); } if(flag==0) { for(j=0;j<=i;j++) printf("%c",a[j]); break; } i=b[flag-1]; flag--; } printf(" "); return 0; }
10-1. 在字符串中查找指定字符(15)
输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。
输入格式:
输入在第1行中给出一个不超过80个字符长度的、以回车结束的非空字符串;在第2行中给出一个字符。
输出格式:
在一行中按照题目要求输出结果。
输入样例1:It is a black box
b
输出样例1:
black box
输入样例2:
It is a black box
B
输出样例2:
Not found
//10-1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char s[10000],ch; gets(s); ch=getchar(); int len=strlen(s),i,j,flag=0; for(i=0;i<len;i++) { if(s[i]==ch) { for(j=i;j<len;j++) { flag=1; printf("%c",s[j]); } break; } } if(flag==0) { printf("Not found "); } return 0; }
10-2. 删除字符串中的子串(20)
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:Tomcat is a male ccatat
cat
输出样例:
Tom is a male
#include <stdio.h> #include <string.h> int main() { char *p; char s1[81],s2[81],temp[81]={0}; gets(s1); gets(s2); while((p = strstr(s1,s2)) != NULL){ //指针指向s1中匹配s2的地方 *p = ' '; //截掉s1指针后面的内容 strcat(temp,s1); //在temp后面粘贴s1 strcat(temp,p+strlen(s2)); //把指针后移s2的长度,在temp后面粘贴指针所指向的数组 strcpy(s1,temp); //把temp内容赋给s1 temp[0]=' '; //清空temp数组 } printf("%s ",s1); return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。