习题10-1 砌砖 UVa11040

1.题目描述:点击打开链接

2.解题思路:找规律题。通过观察易得到如下递推式:(a[i][j]表示第i层,第j个位置的砖的数字)

(1) a[i+2][j+1]=(a[i][j]-a[i+2][j]-a[i+2][j+2])/2;

(2) a[i+1][j]=a[i+2][j+1]+a[i+2][j];

(3) a[i+1][j+1]=a[i+2][j+1]+a[i+2][j+2];

3.代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<deque>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<functional>
using namespace std;

#define N 9
int a[N][N];

int main()
{
	//freopen("test.txt", "r", stdin);
	int t;
	cin >> t;
	while (t--)
	{
		memset(a, 0, sizeof(a));
		for (int i = 0; i < 9; i+=2)
		for (int j = 0; j < i + 1; j += 2)
			cin >> a[i][j];
		for (int i = 6; i >= 0; i-=2)
		{
			for (int j = 0; j < i + 1; j += 2)
			{
				a[i + 2][j + 1] = (a[i][j] - a[i + 2][j] - a[i + 2][j + 2]) / 2;
				a[i + 1][j] = a[i + 2][j + 1] + a[i + 2][j];
				a[i + 1][j + 1] = a[i + 2][j + 1] + a[i + 2][j + 2];
			}
		}
		for (int i = 0; i < 9;i++)
		for (int j = 0; j < i + 1; j++)
			printf("%d%c", a[i][j], j == i ? '\n' : ' ');
	}
	return 0;
}
时间: 2024-10-27 01:21:51

习题10-1 砌砖 UVa11040的相关文章

C语言程序设计教程(第三版)课后习题10.4

1353: C语言程序设计教程(第三版)课后习题10.4 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 296  Solved: 219[Submit][Status][BBS] Description 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图.写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数. Input 输入数据的个数n n个整数移动的位置m Output 移动后的n个数 Sample Input

问题 1047: C语言程序设计教程(第三版)课后习题10.5

/******************************************************************** @file Main.cpp @date 2017-06-01 12:17:46 @author Zoro_Tiger @brief 问题 1047: C语言程序设计教程(第三版)课后习题10.5 http://www.dotcpp.com/oj/problem1047.html ***************************************

问题 1043: C语言程序设计教程(第三版)课后习题10.1

/******************************************************************** @file Main.cpp @date 2017-05-29 12:55:07 @author Zoro_Tiger @brief 问题 1043: C语言程序设计教程(第三版)课后习题10.1 http://www.dotcpp.com/oj/problem1043.html ***************************************

第一章 课后习题 10

1 #include <iostream> 2 using namespace std; 3 int main() 4 { void sort(int x,int y,int z); 5 int x,y,z; 6 cin>>x>>y>>z; 7 sort(x,y,z); 8 return 0; 9 } 10 void sort(int x,int y,int z) 11 { 12 int temp; 13 if(x>y) {temp=x;x=y;y=t

1046: C语言程序设计教程(第三版)课后习题10.4

题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图.写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数. 输入 输入数据的个数n n个整数 移动的位置m 输出 移动后的n个数 样例输入 10 1 2 3 4 5 6 7 8 9 10 2 样例输出 9 10 1 2 3 4 5 6 7 8 1 #include <stdio.h> 2 #define N 100 3 4 // 移动一次 5 move(int a[], int n) 6 { 7 int

APUE 第三版 习题 10.5

这是书本上的答案: See ''Implementing Software Timers'' by Don Libes (C Users Journal, vol. 8, no. 11, Nov. 1990) for an example. A copy of this paper is available online at http://www.kohala.com/start/libes.timers.txt. 我参考上面提到的文档,使用 alarm() 以及time() 简略测试了一下.

常见问题总结之习题10

斜杠  /   反斜杠 \ %r打印代码里的原始字符串,其中包含原始的转义字符.%r用户调试,%s用户显示. print 后每一行增加一个(,),这样print就不会输出换行符而结束这一行跑到下一行去了. input和raw_input区别:input会假设用户输入的是合法的python表达式/raw_input会把所有的输入当作原始数据,然后将其放入字符串中(). 原文地址:https://www.cnblogs.com/corewarsbin/p/10895681.html

C++ Primer 学习笔记_36_STL实践与分析(10)--map类型(下

STL实践与分析 --map类型(下) 六.查找并读取map中的元素 map容器提供了两个操作:count和find,用于检查某个键是否存在而不会插入该键: 不修改map对象的查询 m.count(k) 返回m中k的出现次数 m.find(k) 如果m容器中存在k索引的元素,则返回指向该元素的迭代器.如果不存在,则返回超出末端的迭代器 1.使用count检查map对象中某键是否存在 因为map容器只允许一个键对应一个实例,所以,对于map对象,count成员的返回值只能是1或0. 如果返回值非0

10.4 再探迭代器-插入/IO/反向

10.4.1 插入迭代器 插入迭代器接受一个容器,生成一个迭代器,通过向该迭代器赋值可以实现向容器添加元素 (1)back_inserter: 接受一个参数, 示例: auto iter = back_inserter(iVec): iter = value: (2)front_inserter: 接受一个参数, 示例: auto iter = front_inserter(iVec): iter = value: (3)inserter: 接受两个参数,示例:auto iter = inser