算法-蓝桥杯习题(4-2)

蓝桥杯习题

 

目录

 

入门训练(详见 算法-蓝桥杯习题(1-1))Go

 

基础练习(详见 算法-蓝桥杯习题(2-1))Go

基础练习(详见 算法-蓝桥杯习题(2-2))Go

算法训练(详见 算法-蓝桥杯习题(3-1))Go

算法训练(详见 算法-蓝桥杯习题(3-2))Go

算法训练(详见 算法-蓝桥杯习题(3-3))Go

算法训练(详见 算法-蓝桥杯习题(3-4))Go

算法训练(详见 算法-蓝桥杯习题(3-5))Go

算法训练(详见 算法-蓝桥杯习题(3-6))Go

算法提高(详见 算法-蓝桥杯习题(4-1))Go

算法提高(详见 算法-蓝桥杯习题(4-2))Go

算法提高(详见 算法-蓝桥杯习题(4-3))Go

 

历届试题(详见 算法-蓝桥杯习题(5-1))Go

 

历届试题(详见 算法-蓝桥杯习题(5-2))Go

 

蓝桥杯练习系统评测数据

链接: https://pan.baidu.com/s/1brjjmwv
密码: iieq

 

 

 

算法提高(PartB-10题)

 

 

/*
Torry的困惑(提高型)
*/
#include
#include
int is_prime(int x) {
	int i,s = sqrt(x);
	for(i = 2; i <= s; i++) {
		if(x % i == 0) {
			return 0;
		}
	}
	return 1;
}
int main()
{
	//("%d",is_prime(2));
	int n,count=0,i=1;
	long long result=1;
	scanf("%d",&n);
	while(count

 

 

 

 

/*
计算时间
*/
#include 
#include 

int b[100000][3];
int main(int argc, char *argv[]) {
	int i,n=0,a;
	scanf("%d",&n);
		for(i=0;i

 

 

 

 

 

 

/*
最小乘积(提高型)
*/
#include "stdio.h"
#define Size 1002
int part1(int a[],int left,int right)
{
	int x;
	int low;
	int high;
	x=a[left];
	low=left;
	high=right;
	while(lowx&&lowx&&low

 

 

 

 

 

 

/*
卡勒沃夫之弱水路三千(提高型)
*/
#include
#include
#include
char mm[105][15];
char s1[15],s2[15];
int link[105][2];
int length[105]={0};
int in[105];
int N;
typedef struct{
	char name[15];
	int num;
}girl;
void fun(int x)
{
	int i,y;
	for(i=0;i=length[y]?length[x]+1:length[y];
			fun(y);
		}
}
int comp(const void *a, const void *b)
{
	return (*(girl *)a).num>(*(girl *)b).num?1:-1;
}
int main()
{
	int i,j,T,n,f,x,y,sum=0;
	girl g[105];
	scanf("%d",&T);
	while(T--)
	{
		memset(mm,0,sizeof(mm));
		memset(link,0,sizeof(mm));
		memset(in,0,sizeof(in));
		memset(length,0,sizeof(length));
		scanf("%d",&N);
		n=0;
		for(i=0;i

 

 

 

 

 

 

/*
最大乘积
*/
#include
#include
#include
int max;
void fun(int *val,int index,int size,int m,int cnt,int res);
int main()
{
	int n,m,x,i;
	int val[15];
	
	scanf("%d",&x);
	while(x--)
	{
		scanf("%d %d",&n,&m);
		for(i=0;i max)
		{
			max = res;
		}
		return ;
	}
	if(index>=size)
	{
		return ;
	}
	fun(val,index+1,size,m,cnt+1,res*val[index]);
	fun(val,index+1,size,m,cnt,res);
}

 

 

 

/*
和最大子序列
*/
#include
int a[100001];
int main()
{
	int n,i1;
	scanf("%d",&n);
	for(i1=0;i10)
           a[i1]=a[i1-1]+a[i1];
		   
		   }
   for(i1=0;i1sum)
           sum=a[i1];
   printf("%d\n",sum);
	return 0;
}

 

/*
统计单词数
*/
#include
#include

struct ha
{   int n;
	char c[21];
}hasi[1000];

int main()
{  int i1,i2;
	char a[1500],b[21];
	gets(a);
	int o=0,p=0;
	for(i1=0;a[i1];i1++)
	{  if(a[i1]<='z'&&a[i1]>='a')
	     a[i1]-='a'-'A';
		
	}
	for(i1=0;a[i1+1];i1++)
	{
		if(a[i1]<'A'||a[i1]>'z'||a[i1]<'a'&&a[i1]>'Z')
		{  b[o]='\0'; 
		   if(o==0)
		       continue;
		   for(i2=0;i2='A')
  		             printf("%c",hasi[i1].c[i2]);
                else 
                    printf("%c",hasi[i1].c[i2]-'a'+'A');
           printf(":");
           for(i2=0;i2

 

 

 

 

 

/*
实数相加
*/
#include
int a[101],b[101],c[101],d[101],e[101],f[101];
int main()
{  char k[1000],l[1001];
   int i1,i2,a1,b1,c1,d1,e1,f1;
    gets(k);
    gets(l);
    int o=0;
    for(i1=0;k[i1];i1++)
     {
     	if(k[i1]=='.')
     	   {i1++;
			break;}
        a[o++]=k[i1]-'0';
       
     }
     a1=o;
     o=0;
	 for(;k[i1];i1++)
     {
     	
        b[o++]=k[i1]-'0';
       
     }
   
     b1=o;
     o=0;
    for(i1=0;l[i1];i1++)
     {
     	if(l[i1]=='.')
     	   {i1++;
			break;}
        c[o++]=l[i1]-'0';
      
     }
  
     c1=o;
      o=0;
	 for(;l[i1];i1++)
     {
     	
        d[o++]=l[i1]-'0';
      
     }
    
     d1=o;
     o=0;
     int jiwei=0;
     for(i1=b1-1,i2=d1-1;i1>=0||i2>=0;)
     {
     	if(i1==i2)
     	 {
 	     	f[o]=(b[i1]+d[i2]+jiwei)%10;
 	     	jiwei=(b[i1]+d[i2]+jiwei)/10;
 	     	o++;i1--;i2--;
 	     }
 	     else if(i1>i2)
 	     {  f[o]=(b[i1]+jiwei)%10;
     	 	jiwei=(b[i1]+jiwei)/10;
     	 	o++;i1--;
     	 }
     	 else 
     	 {
 	        f[o]=(d[i2]+jiwei)%10;
     	 	jiwei=(d[i2]+jiwei)/10;	
     	 	o++;i2--;
 	     }
     }
      
	 f1=o;  
     
	 o=0;

     for(i1=a1-1,i2=c1-1;i1>=0||i2>=0;i1--,i2--)
     {  
     	if(i1<0)
     	{  e[o]=(c[i2]+jiwei)%10;
     	   jiwei=(c[i2]+jiwei)/10;
	     	o++;
	     }
	     else if(i2<0)
	     {e[o]=(a[i1]+jiwei)%10;
     	   jiwei=(a[i1]+jiwei)/10;
     		o++;
     	}
     	else 
     	  {e[o]=(a[i1]+c[i2]+jiwei)%10;
     	   jiwei=(a[i1]+c[i2]+jiwei)/10;
  	     	o++;
  	     }
     }
     
     if(jiwei==1)
        e[o++]=1;
        
	 for(i1=o-1;i1>=0;i1--)
	     printf("%d",e[i1]);
    
	   if(b1==0&&d1==0)
	      return 0;
      printf(".");
  
     for(i1=f1-1;i1>=0;i1--)
	     printf("%d",f[i1]); 
      return 0;
}

 

 

 

 

 

/*
项链
*/
#include
#include
int main()
{   
    char a[1000];
    int i1,i2;
	gets(a);
	int max=0,n=strlen(a);
	int total=0;
	for(i1=0;a[i1];i1++)
	{     
		 char p='w';
		 total=0;
		 for(i2=i1;;i2++)
		  {   if(i2>=n)
		          i2-=n;
  		     if(p=='w'||a[i2]==p||a[i2]=='w')
			   {
   			       	if(a[i2]!='w')
   			       	    p=a[i2];
   			       	total++;
   			       	
   			   }
		     else
			      break;
			if(total>=n)
			   break;	
  		  }
  		  p='w';
  	
	     for(i2=i1-1;;i2--)
	     {   if(total>=n)
		          break;
     		  if(i2<0)
     		     i2+=n;
  		      if(p=='w'||a[i2]==p||a[i2]=='w')
  		         {    if(a[i2]!='w')
         		  	 p=a[i2];
         		  	 total++;
         		  }
      		  else
         		  break;
		     
     	 } 
	
		  if(total>max)
		      max=total;
	}
	 printf("%d\n",max);
	return 0;
}

 

 

 

 

 

 

/*
交换Easy
*/
#include 

int main()
{
	int n,m,ary[1000],temp,op1,op2;
	scanf("%d %d",&n,&m);
	int i;
	for(i=0;i

 

 

 

 

 

GoToTheNextPart

你可能感兴趣的:(算法-蓝桥杯,算法-数据结构)