if(!
strcmp(str[b],temp)){
ttongji++;
i++;
str[b][0]= '\0';
}
}
if(ttongji >otongji||(ttongji==otongji&&strlen(temp)>strlen(out))){
strcpy(out,temp);
otongji =ttongji;
}
}
}
i=0;
while(out[i]!
= '\0'){
printf("%c",out[i]);
i++;
}
getchar();
return0;
}
算法训练矩阵乘法
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
输入两个矩阵,分别是m*s,s*n大小。
输出两个矩阵相乘的结果。
输入格式
第一行,空格隔开的三个正整数m,s,n(均不超过200)。
ﻫ 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。
输出格式
m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。
样例输入
232
10 -1
11-3
03
12
31
样例输出
-3 2
-82ﻫ
提示
矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。
例如样例中C(1,1)=(1,0,-1)*(0,1,3)= 1*0+0*1+(-1)*3=-3
#include<stdio.h>
intmain(){
ﻩintm,s,n,i,j,k,a[200][200],b[200][200],c[200][200];
scanf("%d%d%d",&m,&s,&n);
for(i=1;i<=m;i++){
for(j=1;j<=s;j++)
ﻩﻩﻩscanf("%d",&a[i][j]);
ﻩ}
for(i=1;i<=s;i++){
for(j=1;j<=n;j++)
ﻩscanf("%d",&b[i][j]);
ﻩ}
for(i=1;i<=m;i++){
ﻩfor(j=1;j<=n;j++)
ﻩc[i][j]=0;
}
for(i=1;i<=m;i++){
ﻩﻩfor(j=1;j<=n;j++){
ﻩfor(k=1;k<=s;k++){
ﻩﻩc[i][j]=c[i][j]+a[i][k]*b[k][j];
ﻩ}
ﻩﻩ}
ﻩ}
ﻩfor(i=1;i<=m;i++){
ﻩfor(j=1;j<=n;j++)
ﻩﻩprintf("%d",c[i][j]);
ﻩprintf("\n");
}
return0;
}
算法训练大小写转换
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。
ﻫ输入格式:
输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。
输出格式:
输出经过转换后的字符串。
ﻫ输入输出样例
样例输入
AeDb
样例输出
aEdB
#include<stdio.h>
intmain()
{
int i;
charch[100];
ﻩgets(ch);
i=0;
ﻩwhile(ch[i]!
='\0')
ﻩ{
ﻩif(ch[i]<='z'&&ch[i]>='a')
ﻩﻩch[i]-=32;
ﻩﻩelse ch[i]+=32;
i++;
}
puts(ch);
ﻩreturn0;
}
算法训练 动态数组使用
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。
要求尽可能使用函数实现程序代码。
平均值为小数的只保留其整数部分。
样例输入
5ﻫ340 02
样例输出
91
样例输入
7
327 5 29 1
样例输出
294
#include <stdio.h>
intmain()
{
ﻩinti,n,a[100],b[100],sum=0,avg=0;
scanf("%d",&n);
ﻩfor(i=0;i<n;i++)
{
ﻩﻩscanf("%d",&b[i]);
ﻩﻩa[i]=b[i];
ﻩsum=sum+a[i];
}
ﻩavg=sum/n;
ﻩprintf("%d %d\n",sum,avg);
ﻩreturn0;
}
算法训练删除数组零元素
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。
注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输出删除后数组中元素的个数并依次输出数组元素。
样例输入:
(输入格式说明:
5为输入数据的个数,340 02 是以空格隔开的5个整数)
5ﻫ 34002
样例输出:
(输出格式说明:
3为非零数据的个数,3 42是以空格隔开的3个非零整数)ﻫ3
3 42
样例输入
7
00 7009 0
样例输出
2
79
样例输入
3ﻫ00 0
样例输出
0
算法训练 最小乘积(基本型)
时间限制:
1.0s 内存限制:
512.0MB
查看参考代码
锦囊1
锦囊2
锦囊3
问题描述
给两组数,各n个。
ﻫ 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。
要求程序输出这个最小值。
例如两组数分别为:
13 -5和-241
ﻫ 那么对应乘积取和的最小值应为:
ﻫ (-5)*4+3* (-2)+1*1 =-25
输入格式
第一个行一个数T表示数据组数。
后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
n<=8,T<=1000
输出格式
一个数表示答案。
样例输入
231 3-5-24151234510 10 1
样例输出
-256
#include
void sort1(int*a,intn)
{
ﻩint i,j;
int tmp;
ﻩfor(i=0;i<n-1;i++)
ﻩﻩfor(j=0;j<n-1-i;j++)
ﻩif(a[j]>a[j+1])
ﻩﻩﻩ{
ﻩtmp=a[j];
ﻩa[j]=a[j+1];
ﻩa[j+1]=tmp;
ﻩ}
}
void sort2(int*a,intn)
{
int i,j;
int tmp;
ﻩfor(i=0;iﻩfor(j=0;j<n-1-i;j++)
ﻩif(a[j]<a[j+1])
ﻩﻩ{
ﻩﻩtmp=a[j];
ﻩﻩa[j]=a[j+1];
ﻩﻩﻩa[j+1]=tmp;
ﻩﻩ}
}
intmain(void)
{
int T;
intn,i;
ﻩinttotal;
inta[8],b[8],c[8];
ﻩscanf("%d",&T);
while(T)
ﻩ{
ﻩﻩtotal=0;
ﻩscanf("%d",&n);
ﻩfor(i=0;iﻩscanf("%d",&a[i]);
ﻩﻩfor(i=0;i<n;i++)
ﻩﻩscanf("%d",&b[i]);
sort1(a,n);
sort2(b,n);
ﻩ
ﻩ