输入01字符串,统计最多的连续的1有几个
stage1.考试中
对于0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1这样的串,考虑先统计每组1的个数(3/4/5)放进数组,排序得最大个数(5)----没做出来
stage2.考完
不必把所有个数放进数组,每统计出一个个数只跟最大值比较即可,有如下代码
//输入01字符串,统计最多的连续的1有几个
#include <iostream>
using namespace std;
int main()
{
int a[10];
int cot=0; //计数
//输入
for(int j=0;j<10;j++)
{
cin>>a[j];
}
//统计
int maxx=0;
for(int j=0;j<10;j++)
{
if(a[j]==1)
{
cot++;
if(j==9) //开始这里没写,0000011111这种统计不出
{
if(cot>maxx)
{
maxx=cot;
}
}
}
else if(a[j]!=1)
{
if(cot>maxx)
{
maxx=cot;
}
cot=0;
}
}
cout<<maxx<<endl;
return 0;
}
输入改成01矩阵,统计每行中连续最多的1的个数
//输入01矩阵,统计每行最多的连续的1有几个
#include <iostream>
using namespace std;
int main()
{
int a[2][10];
int cot[2]={0};
int maxx[2]={0};
for(int i=0;i<2;i++)
{
for(int j=0;j<10;j++)
{
cin>>a[i][j]; //输入之间必须有空格,没有竟然不行
}
}
for(int i=0;i<2;i++)
{
for(int j=0;j<10;j++)
{
if(a[i][j]==1)
{
cot[i]++;
if(j==9)
{
if(cot[i]>maxx[i])
{
maxx[i]=cot[i];
}
}
}
if(a[i][j]!=1)
{
if(cot[i]>maxx[i])
{
maxx[i]=cot[i];
}
cot[i]=0;
}
}
}
cout<<"111"<<endl;
for(int i=0;i<2;i++)
{
cout<<maxx[i]<<endl;
}
return 0;
}
总结
想得两个数的最值,直接比较
#include <stdio.h>
double max(double a,double b){
return a>b?a:b;
}
double min(double a,double b){
return a<b?a:b;
}
int main(){
int a=4,b=5,big,small;
big=(int)max(a,b);
small=(int)min(a,b);
printf("%d %d,max=%d,min=%d\n",a,b,big,small);
return 0;
}
想得多个数/数组的最值,可以排序
可以循环两两比较
可以与INT_MAX/INT_MIN/自定义的最值比较(上