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上. 下面给个计划练练: 第 ...
随机推荐
- sass --watch 失败bug
NameError: uninitialized constant Sass::Plugin::Compiler::SassListen 网上说法是sass v3.2.10有bug 但是我版本3.5. ...
- windows显示文件扩展名
搜索打开windows的文件资源管理选项,如下去掉“隐藏已知文件类型的扩展名”即可 打开之后显示如下:
- GIMP永久保存选择的办法
选择选区,然后把选区放到channel里面去 这是一张已经选择好的选区的图片 然后选择select下的Save to Channel, 需要这部分选区的话,只需要点击这个按钮就可以了
- Linux菜鸟起飞之路【四】绝对路径、相对路径及常用目录
一.绝对路径与相对路径 Linux操作系统中存在着两种路径:绝对路径和相对路径.我们在访问文件或文件夹的时候,其实都是通过路径来操作的.两种路径在实际操作中能起到同等的作用. 在开始具体介绍之前,我们 ...
- styled-components
参考: http://www.alloyteam.com/2017/05/guide-styled-components/ https://medium.com/styled-components/g ...
- C#上位机开发(二)—— Hello,World
上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...
- BRVAH(让RecyclerView变得更高效) (3)
本文来自网易云社区 作者:吴思博 3 实现列表加载动画效果 3.1默认动画 我们只需将自建的 adapter 继承它对应满足需求的 Adapter,然后在 Activity 中实例化,通过ope ...
- java编程思想阅读记录
第五章:初始化与清理 1.构造器确保初始化 构造器采用与类名相同的方法. 创建对象时,将会为对象分配存储空间,并调用相应的构造器.这就确保了在你能操作对象之前,它就已经恰当的被初始化了. 垃圾回收器负 ...
- HDU 5536 Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- BNUOJ 4215 最长公共连续子序列
最长公共连续子序列 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class ...