zoukankan      html  css  js  c++  java
  • 紫书 习题 10-1UVa 111040(找规律)

    通过观察可以得

    图可以分成很多个上面一个,中间两个,下面三个的“模板”

    这个时候最上面一个知道,最下面得左右知道

    那么可以设下面中间为x,左边为a1, 右边为a2, a1a2已知

    那么可以得出最上面得一个为a1+a2+2x,那么最上面又是已知的

    所以就可以推出x,那么这个模板的所有元素就可以推出来了

    详情见代码

    #include<cstdio>
    #define REP(i, a, b) for(int i = (a); i < (b); i++)
    using namespace std;
    
    const int MAXN = 10;
    int a[MAXN][MAXN]; 
    
    int main()
    {
    	int T;
    	scanf("%d", &T);
    	
    	while(T--)
    	{
    		for(int i = 1; i <= 9; i += 2)
    			for(int j = 1; j <= i; j += 2)
    				scanf("%d", &a[i][j]);
    		
    		for(int i = 1; i <= 9; i += 2)
    		{
    			for(int j = 2; j <= i + 2; j += 2)
    				a[i+2][j] = (a[i][j-1] - a[i+2][j-1] - a[i+2][j+1]) / 2;	//推x 
    			for(int j = 1; j <= i + 1; j++)
    				a[i+1][j] = a[i+2][j] + a[i+2][j+1];  //推出第二层的元素 
    		}
    		
    		REP(i, 1, 10)
    		{
    			printf("%d", a[i][1]);
    			REP(j, 2, i + 1)
    				printf(" %d", a[i][j]);
    			puts("");
    		}
    	}
    	
    	return 0;	
    } 
  • 相关阅读:
    关于plsql表如何创建自增长列
    逻辑运算符号,赋值运算符,关系运算符
    运算符和自增自减
    其他进制的数字
    数据强转
    JS基本数据类型
    学习进度条
    第14天
    第13 天
    课堂作业05
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819489.html
Copyright © 2011-2022 走看看