zoukankan      html  css  js  c++  java
  • 小谈边界问题

    边界问题主要有两种,动态关系的,还有就是静态关系的.
    第一类是有一定对称性的几何图形,比方说打印倒三角形或者菱形等.这样的题目一般思路就是找出图形的特点(对称性等)与循环变量(行号,列号)之间的关系.
    我们能够如果行用i表示,列用j表示.我们的目的就是找出i,j与图形之间的相应关系.按图形形状的不同,复杂性不同.可是都能够看做是在寻找一种或多种"静态关系". 
    这类题主要有打印三角形,代码例如以下:
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,n,m;
    	char a[110][110];
    	scanf("%d",&n);
    	while(n--)
    	{
    		memset(a,0,sizeof(a));
    		scanf("%d",&m);
    		for(i=1;i<=m/2;i++)
    		{
    			for(j=1;j<=m;j++)
    			{
    				if(j<=m-i+1&&j>=i)
    				a[i][j]='*';
    				else
    				a[i][j]=' ';
    			}
    		}
    		for(;i<=m;i++)
    		{
    			for(j=1;j<=i;j++)
    			{
    				if(j>=m-i+1&&j<=i)
    				a[i][j]='*';
    				else
    				a[i][j]=' ';
    			}
    		}
    		for(i=1;i<=m/2;i++)
    		{
    			for(j=1;j<=m;j++)
    			{
    				if(i+j>m+1)
    				break;
    				printf("%c",a[i][j]);
    			}
    			
    			printf("
    ");
    		}
    		for(;i<=m;i++)
    		{
    			for(j=1;j<=i;j++)
    			printf("%c",a[i][j]);
    			printf("
    ");
    		}
    	}
    	return 0;
    }

    //这是放大的X的代码 有异曲同工之妙 故粘贴例如以下 
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int n,i,j,m;
        char a[82][82];
        scanf("%d",&m);
        getchar();
        while(m--)
        {
            memset(a,0,sizeof(a));
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=n;j++)
                {
                    if(i==j||j==n-i+1)
                    a[i][j]='X';
                    else
                    a[i][j]=' ';
                }
            }
            for(i=1;i<=n/2;i++)
            {
                for(j=1;j<=n;j++)
                {
                    if(j+i>n+1)
                    break;
                    printf("%c",a[i][j]);
                }
                printf("
    ");
            }
            for(;i<=n;i++)
            {
                for(j=1;j<=i;j++)
                {
                    printf("%c",a[i][j]);
                }
                printf("
    ");
            }
            printf("
    ");
        }
        return 0;
    }

    第二类是有一定规律性的图形,比方蛇形填数,走棋盘等.这样的题目的一般思路就是找出题   目中对图形的限制条件(不能出界,依照一定规则填充等).
    我们用各种循环和If语句将这些“规则”变成程序语句.相同,依据“规则”不同,复杂性也不   同.可是都能够看做是在寻找一种或多种"动态关系".
    现将蛇形填数代码粘贴例如以下:
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int a[110][110];
    	int x,y,n,m;
    	scanf("%d",&n);
    	memset(a,0,sizeof(a));
    	m=a[x=0][y=n-1]=1;
    	while(m<n*n)
    	{
    		while(x+1<n&&!a[x+1][y])
    		a[++x][y]=++m;
    		while(y-1>=0&&!a[x][y-1])
    		a[x][--y]=++m;
    		while(x-1>=0&&!a[x-1][y])
    		a[--x][y]=++m;
    		while(y+1<n&&!a[x][y+1])
    		a[x][++y]=++m;
    	}
    	for(x=0;x<n;x++)
    	{
    		for(y=0;y<n;y++)
    		{
    			printf("%3d",a[x][y]);
    		}
    		printf("
    ");
    	}
    	return 0;
    }

  • 相关阅读:
    Python综合学习 python入门学习 python速成
    博客建设
    文献搜索方法
    Mac效率工具集合
    Mac High Sierra 三步搞定安装Eclipes
    Mac High Sierra一步搞定Mysql安装
    Mac中使用的建模工具/流程图制作
    R语言的安装以及入门
    (一)linux基本的操作命令
    小程序canvas简单电子签名
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4296409.html
Copyright © 2011-2022 走看看