Ural1313(输出格式)
来源:互联网 发布:大数据可视化方法 编辑:程序博客网 时间:2024/05/23 01:15
题目链接:点击打开链接
解题思路:
本题考查输出格式,不用看描述,太长····直接看样例即可。PTQ告诉我一种方法,十分神奇。
首先对于左上角(包括对角线)那些元素开一个数组存储,发现对于每个斜线上的元素,都以每行第一个元素为首,依次变换为(i - 1 , j + 1);同理。对于右下角哪些元素,从最右侧的每个元素为首,依次变换为(i + 1 , j - 1)。不同之处在于第二个数组倒着输出。
本题第二个样例(隐藏的)为特殊数据,当n == 1时,我们直接输出g[0][0]即可,作为特殊处理。
完整代码:
#include <algorithm>#include <iostream>#include <cstring>#include <climits>#include <cstdio>#include <string>#include <cmath>#include <map>#include <queue>using namespace std;typedef long long LL;const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const double EPS = 1e-9;const double PI = acos(-1.0); //M_PI;const int maxn = 101;int g[maxn][maxn];int res[10001] , res2[10001];int main(){ #ifdef DoubleQ freopen("in.txt","r",stdin); #endif std::ios::sync_with_stdio(false); std::cin.tie(0); int n; while(cin >> n) { for(int i = 0 ; i < n ; i ++) for(int j = 0 ; j < n ; j ++) cin >> g[i][j]; if(n == 1) { cout << g[0][0] << endl; continue; } int index = 0; for(int k = 0 ; k < n ; k ++) { int j = 0; res[index++] = g[k][j]; int i = k; while(i - 1 >= 0 && j + 1 < n) { i --; j ++; res[index++] = g[i][j]; } } int index2 = 0; for(int k = n - 1 ; k >= 1 ; k --) { int j = n - 1; res2[index2++] = g[k][j]; int i = k; while(i + 1 < n && j - 1 >= 0) { i ++; j --; res2[index2++] = g[i][j]; } } for(int i = 0 ; i < index ; i ++) cout << res[i] << " "; for(int i = index2 - 1 ; i >= 1 ; i --) cout << res2[i] << " "; cout << res2[0] << endl; }}
0 0
- Ural1313(输出格式)
- Ural319(输出格式)
- hdoj1014(输出格式)
- (转)C++输出格式
- 输出格式
- 格式输出
- 输出格式
- 输出格式
- 输出格式
- 输出格式
- 输出格式
- 输出格式
- 输出格式
- printf()输出格式控制 (转)
- 国际化数字格式输出(C#版)
- C#字符输出格式控制(转帖)
- printf输出各种格式(转)
- Printf()输出格式控制 (转载)
- Struts2.5框架搭建
- cocos2d-x.3.x 创建工程
- 解决ScrollView嵌套横向、纵向ListView时出现的显示问题
- 【计算机视觉】OpenCV的最近邻开源库FLANN
- android Handler详细使用方法实例
- Ural1313(输出格式)
- 设计模式实践四-里氏替换原则
- ACM--steps--4.1.8--猜数字
- JVM加载class文件的原理
- Windows 各种计时函数总结
- STL算法------元素计数
- 在android里保存数据的三种形式(Saving Data)
- Decorator Pattern
- 核心动画(5)《CATransaction 事务类》