一个我觉得蛮重要的问题,也是会经常碰到的问题

就是觉得自己对的代码提交到OJ发现输出超限

我是真的输出超限了吗?

QAQ

其实,不然。

我把这类问题分为几类:

(一):死循环:while(1)

   比如以下这行代码:

 while()
{ }

看似此while(1)很不起眼,那我就再举一个例子吧

2264: 矩阵转换(指针题)

时间限制: 1 Sec  内存限制: 32 MB
提交: 665  解决: 168
[提交][状态][讨论版]

题目描述

将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下一次从小到大存放),写个一函数来实现,用main函数调用。(要求用指针来做)

输入

每组数据为5X5的矩阵,矩阵的数字为整数。有多组测试数据,直到输入文件结束。

输出

输出按题目要求改变后的矩阵,每组结果后空一行。

样例输入

35 34 33 32 31
30 29 28 27 26
25 24 23 22 21
20 19 18 17 16
15 14 13 12 11

样例输出

11 34 33 32 12
30 29 28 27 26
25 24 35 22 21
20 19 18 17 16
13 23 15 31 14

我的原代码是:

 #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整除。

输入

输入有多组,直到EOF
每组一行,包括一组数,数字很大,长度不超过2000,int是存不了的,同时也是支持字母输入的(A~I 或 a ~ i)。A和a表示1,B和b表示2。。。。I和i表示9.是不是感觉到了来自学长的恶意了呢?

输出

输出Yes或者No。我比较喜欢逆向思维,所以呢,能被四整除输出No,不能则输出Yes。

样例输入

201314
ababababababababababababab

样例输出

Yes
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 心得的更多相关文章

  1. 各大ACM OJ网址

    做快乐的程序员 以你的条件,你不必追求优秀,但你可以做到良好. 各大OJ网址 ACM OJ Collection(排名不分先后): 中国:(China) 华东地区: 浙江: 杭州电子科技大学(HDU) ...

  2. ACM#学习心得0

    加入实验室也有些日子了,这是第一个近来的小小学习心得 1.在之前的训练题和考核题以及平时刷过的题中,我发现自己对字符串这一块的基础知识掌握还是比较差的,总是不能正确的接收的字符或字符串. 这两个星期, ...

  3. ACM OJ Collection

    浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 同济大学(TJU):http://acm.t ...

  4. 山东理工大学SDUT - ACM OJ 题: Python代码 及分析

    Python基础语法学习完成,先刷基础题100道巩固 ,附 题目.代码.知识分析 题目:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index ...

  5. 老的acm & oj学习站点

    1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ...

  6. ACM讲座心得

  7. ACM学习心得

    今天打比赛,调整好了心态,不管rank榜,所以做的比上次好,今天A了四个题,都很水,memset的清零时间,需要好长,因为memset 跟cin超时了,它的数据量1e6,所以超时了还是多用scanf, ...

  8. 我的ACM参赛故事

    从我接触程序竞赛到现在应该有十多年了,单说ACM竞赛,从第一次非正式参赛到现在也差不多有7年多的样子.有太多的故事,想说的话,却一直没能有机会写下来.一方面是自己忙,一方面也是自己懒.所以很感谢能有人 ...

  9. acm学习指引

    acm学习心得及书籍推荐   一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...

随机推荐

  1. POST一个多部分编码(Multipart-Encoded)的文件

    Requests使得上传多部分编码文件变得很简单: >>> url = 'http://httpbin.org/post' >>> files = {'file': ...

  2. 经典DP问题--poj1088滑雪

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  3. PowerShell-第1章 交互界面

    1.1运行程序.脚本和已有的工具: Program.exe arguments ScriptName.ps1 arguments BatchFile.cmd arguments 如果运行的命令名中包含 ...

  4. linux 系统备份还原

    操作系统或文件备份 tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude ...

  5. Java-确定被加载类的路径

    如何输出当前类在硬盘的物理路径 package com.tj; import java.net.URL; import java.security.CodeSource; import java.se ...

  6. static对局部变量的作用

    static修饰局部变量: 1,延长局部变量的生命周期到程序技术时,局部变量才会被销毁 2,并没有改变局部变量的作用域 static修饰局部变量的使用场合: 1,如果某个函数的调用频率特别高 2,这个 ...

  7. mysql条件查询and or使用实例及优先级介绍

    mysql and与or介绍 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 使用OR关键字时: 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 如果不符合这 ...

  8. wordpress 使用jquery需要主要的问题

    wordpress 使用jquery时,不能直接使用$, 而是用jQuery 代替$, 而且wordpress默认调用jquery

  9. Linux rm删除

    将 test1子目录及子目录中所有档案删除 命令: rm -r test1 rm -rf test2命令会将 test2 子目录及子目录中所有档案删除,并且不用一一确认 命令: rm -rf  tes ...

  10. UVA - 10591 Happy Number

    Happy Number UVA - 10591 Let the sum of the square of the digits of a positive integer S0 be represe ...