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上. 下面给个计划练练: 第 ...
随机推荐
- 利用React遍历数组,并且用数组的元素生成<li>arrItem</li>标签组
var numbers = [1,2,3,4,5,6,7,8,9]; ReactDom.render({ <ul> { numbers.map(function(item){ return ...
- WebAssembly MDN简单使用
MDN 就是通过编译器编译完成c后生成的胶水代码 引入js 就能直接调用定义在c或者c++中的函数了 c代码如下: #include <stdio.h> #include <stdl ...
- POJ-2251-地下城
这题是一道简单的广搜题目,读入的时候,需要注意,如果是用scanf读入的话,就直接读取每行的字符串,不然的话,行尾的回车,也会被当成字符读入,这样的话,每次读取的数目就会小于我们想要的数目,因为每次把 ...
- C#图形学习笔记
绘图常用控件.类和结构 颜色 使用System.Drawing.Color结构表示 设置颜色的方法 调用静态函数:Color.FromArgb() public static Color FromAr ...
- mysql 慢查询日志 pt-query-digest 工具安装
介绍:pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump ...
- 《linux设备驱动开发详解》笔记——6字符设备驱动
6.1 字符设备驱动结构 先看看字符设备驱动的架构: 6.1.1 cdev cdev结构体是字符设备的核心数据结构,用于描述一个字符设备,cdev定义如下: #include <linux/cd ...
- Linux下安装SaltStack
一.配置yum源和epel源 epel源下载地址:http://pan.baidu.com/s/1o7NJ26u 1.配置yum源 (1)上传操作系统镜像文件来配置yum源,挂载点目录为/yum mk ...
- luogu2805 [NOI2009]植物大战僵尸
想象一下,要搞掉一个植物,必须先搞掉另一些植物--我们可以发现这是一个最大权闭合子图的问题. 最大权闭合子图的话,太空飞行计划问题是一个入门题,可以一看. 然而我们手玩一下样例就会惊恐地发现,保护关系 ...
- 使用Phaser开发你的第一个H5游戏(一)
本文来自网易云社区 作者:王鸽 不知你是否还记得当年风靡一时的2048这个游戏,一个简单而又不简单的游戏,总会让你在空闲时间玩上一会儿. 在这篇文章里,我们将使用开源的H5框架--Phaser来重现这 ...
- Linux之crontab定时任务
****crontab简介**** 简而言之呢,crontab就是一个自定义定时器. ****crontab配置文件**** 其一:/var/spool/cron/ 该目录下存放的是每个用户(包括ro ...