ZJGSU-ACM OJ 心得
一个我觉得蛮重要的问题,也是会经常碰到的问题
就是觉得自己对的代码提交到OJ发现输出超限
我是真的输出超限了吗?
QAQ
其实,不然。
我把这类问题分为几类:
(一):死循环:while(1)
比如以下这行代码:
while()
{ }
看似此while(1)很不起眼,那我就再举一个例子吧
2264: 矩阵转换(指针题)
时间限制: 1 Sec 内存限制: 32 MB
提交: 665 解决: 168
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
样例输出
我的原代码是:
#include<stdio.h>
#include<string.h>
int main()
{
void fun(int a[][]);
int i,j;
int a[][];
while()
{
for(i=;i<;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);
fun(a);
for(i=;i<;i++)
{
for(j=;j<;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
return ;
}
void fun(int a[][])
{
int i,j,max,min1,min2,min3,min4;
int tmp;
int ti,tj;
max=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]>=max)
{
max=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min1=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]<=min1)
{
min1=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min2=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(i!=||j!=)
{
if(a[i][j]<=min2)
{
min2=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min3=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min3)
{
min3=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min4=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min4)
{
min4=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp;
return;
}
(查看完全代码点击)
解决方案:
#include<stdio.h>
#include<string.h>
int a[][];
void fun()
{
int i,j,max,min1,min2,min3,min4;
int tmp;
int ti,tj;
max=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]>=max)
{
max=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min1=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]<=min1)
{
min1=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min2=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(i!=||j!=)
{
if(a[i][j]<=min2)
{
min2=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min3=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min3)
{
min3=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min4=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min4)
{
min4=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp;
return;
}
int main()
{
int i,j; while(scanf("%d",&a[][])!=EOF)
{
for(i = ;i < ;i++)
{
scanf("%d",&a[][i]);
}
for(i=;i<;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);
fun();
for(i=;i<;i++)
{
for(j=;j<;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
}
return ;
}
(查看完全代码点击)
(二)不当输入 while(gets(string)!=EOF)
比如以下这段代码:
while(gets(string)!=EOF)
{ }
举个刚刚AC了的例子~
问题 B: 能被四整除吗???
时间限制: 1 Sec 内存限制: 32 MB
提交: 30 解决: 17
[提交][状态][讨论版]
题目描述
这题有点水,主要的目的是想让你们知道数字的一些奇妙之处。题意很简单,给你一个数,让你判断是否能被4整除。
输入
输出
输出Yes或者No。我比较喜欢逆向思维,所以呢,能被四整除输出No,不能则输出Yes。
样例输入
ababababababababababababab
样例输出
No
#include <stdio.h>
#include <string.h>
int main()
{
int ll,i;
int uiu;
char sun[];
while(gets(sun)!=EOF)
{
ll=strlen(sun);
for(i=;i<ll;i++)
{
if(sun[i]>='a'&&sun[i]<='z')
sun[i]=sun[i]-'a'+'';
else if(sun[i]>='A'&&sun[i]<='Z')
sun[i]=sun[i]-'A'+'';
}
if(ll==)
{
if((sun[]-'')%==)
{
printf("No\n");
}
else
printf("Yes\n");
}
else
{
uiu=(sun[ll-]-'')+(sun[ll-]-'')*;
if(uiu%==)
printf("No\n");
else
printf("Yes\n");
}
}
return ;
}
(查看完全代码点击)
解决方案:
#include <stdio.h>
#include <string.h>
int main()
{
int ll,i,uiu;
char sun[];
while(scanf("%s",sun)!=EOF)
{
ll=strlen(sun);
for(i=;i<ll;i++)
{
if(sun[i]>='a'&&sun[i]<='z')//将字母转化成数字
sun[i]=sun[i]-'a'+'';
else if(sun[i]>='A'&&sun[i]<='Z')
sun[i]=sun[i]-'A'+'';
}
if(ll==)//如果数组长度只有一位的时候
{
if((sun[]-'')%==)
{
printf("No\n");
}
else
printf("Yes\n");
}
else//数组长度超过两位,则取最后两位判断是否能被4整除
{
uiu=(sun[ll-]-'')+(sun[ll-]-'')*;
if(uiu%==)
printf("No\n");
else
printf("Yes\n");
}
}
return ;
}
(查看完全代码点击)
ZJGSU-ACM OJ 心得的更多相关文章
- 各大ACM OJ网址
做快乐的程序员 以你的条件,你不必追求优秀,但你可以做到良好. 各大OJ网址 ACM OJ Collection(排名不分先后): 中国:(China) 华东地区: 浙江: 杭州电子科技大学(HDU) ...
- ACM#学习心得0
加入实验室也有些日子了,这是第一个近来的小小学习心得 1.在之前的训练题和考核题以及平时刷过的题中,我发现自己对字符串这一块的基础知识掌握还是比较差的,总是不能正确的接收的字符或字符串. 这两个星期, ...
- ACM OJ Collection
浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 同济大学(TJU):http://acm.t ...
- 山东理工大学SDUT - ACM OJ 题: Python代码 及分析
Python基础语法学习完成,先刷基础题100道巩固 ,附 题目.代码.知识分析 题目:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index ...
- 老的acm & oj学习站点
1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ...
- ACM讲座心得
- ACM学习心得
今天打比赛,调整好了心态,不管rank榜,所以做的比上次好,今天A了四个题,都很水,memset的清零时间,需要好长,因为memset 跟cin超时了,它的数据量1e6,所以超时了还是多用scanf, ...
- 我的ACM参赛故事
从我接触程序竞赛到现在应该有十多年了,单说ACM竞赛,从第一次非正式参赛到现在也差不多有7年多的样子.有太多的故事,想说的话,却一直没能有机会写下来.一方面是自己忙,一方面也是自己懒.所以很感谢能有人 ...
- acm学习指引
acm学习心得及书籍推荐 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...
随机推荐
- 268. Missing Number@python
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...
- React项目搭建及依赖安装
一.前提 首先保证node.js已安装完成... 安装完成后,打开cmd命令行,输入 node -v 和 npm -v 来查看版本号,如果显示则安装完成. 二.安装react脚手架 在cmd命令行中输 ...
- 控制mysql数字转换
在实际工作中我们常常需要将数字进行格式化,比如将12.0073233变为12.01,或把12变为12.00,或把12变为0000012,这种格式之间的转换总结如下: 一,浮点数的转换--直接设 ...
- MySql存储过程的调试
写和调试存储过程比较好的工具是dbForge studio for mysql 校验其中临时表字段是否符合要求,在存储过程中动态为临时表添加字段约束,或者写个游标,把数据迭代出来,一个个判断.当游标迭 ...
- leepcode作业解析 - 5-19
18.两数之和II -输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 ...
- PAT Basic 1058
1058 选择题 批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多. 输入格式: 输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学 ...
- PC上测试移动端网站和模拟手机浏览器
一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面 ...
- 洛谷P3961 图的遍历
题目来源 做这道题的方法不少. 在这里我只提一种 就是大法师. 可以采用反向建边,从最大的点开始dfs 我们考虑每次从所剩点中最大的一个点出发,我们暂且称它为i,而凡是i这个点所能到达的点,可以到达的 ...
- JSON Extractor/jp@gc - JSON Path Extractor 举例
测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 {"status_code":200,"message" ...
- NYOJ-525一道水题思路及详解
一道水题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他 ...