LeetCode344
2016-07-03 21:24
78 查看
P344倒置字符串
这里说的是字符串,并不是一个数组,所以在进行倒序之前,要先将它转化为字符数组,可以用头toCharArray(),
这里可以写成char [ ] word=s.toCharArray();
这里说的是字符串,并不是一个数组,所以在进行倒序之前,要先将它转化为字符数组,可以用头toCharArray(),
这里可以写成char [ ] word=s.toCharArray();
public class Solution { /** * 给定整数不断将它的各位相加,直到相加的结果小于10,返回结果 * @param num * @return */ public int addDigits(int num) { return (num - 1) % 9 + 1; } }#include struct note{ int x;//行的位置 int y;//列的位置 }; char a[20][21];//用来存储地图 int getnum(int i,int j){ int sum,x,y; sum=0;//用sum来计算可以被消灭的敌人数,初设为0 //将坐标i,j复制到两个新变量x,y中,以便之后向上下左右四个方向统计可以消灭的敌人书 //向上统计可以 消灭的第人数 x=i;y=j; while(a[x][y]!='#'){//判断的点是不是墙,如果不是墙就继续 //如果当前的点是敌人,则进行计数 if (a[x][y]=='G') sum++; //x--的作用是继续向上统计 x--; } //向下统计可以消灭的敌人数 x=i;y=j; while(a[x][y]!='#'){ if(a[x][y]=='G') sum++; //y--的作用是继续向左统计 x++; } //向左统计可以消灭的敌人数 x=i;y=j; while(a[x][y]!='#'){ if(a[x][y]=='G') sum++; //y--的作用是继续向左统计 y--; } //向右统计可以消灭的敌人数 x=i;y=j; while(a[x][y]!='#'){ if(a[x][y]=='G') sum++; //y++的作用是继续向右统计 y++; } return sum; } int main(){ struct note que[401];//假设地图大小不超过20*20,因此队列拓展不会超过400个 int head,tail; int book[20][20]={0};//定义一个标记数组并全部初始化为0 int i,j,k,sum,max=0,mx,my,n,m,startx,starty,tx,ty; //定义一个用于表示走的方向的数组 int next[4][2]={ {0,1},//right {1,0},//down {0,-1},//left {-1,0},//up }; //读入n和m,n表示有多少行字符,m表示每行有多少列 scanf("%d %d %d %d",&n,&m,&startx,&starty); //读入n行字符 for(i=0;i<=n-1;i++){ scanf("%s",a[i]); } //队列初始化 head=1; tail=1; //往队列插入小人的其实坐标 que[tail].x=startx; que[tail].y=starty; tail++; book[startx][starty]=1; max=getnum(startx,starty); mx=startx; my=starty; //当队列不为空的时候循环 while(headn-1||ty<0||ty>m-1) continue; //判断是否为平地或者曾经走过 if(a[tx][ty]=='.'&&book[tx][ty]==0){ //每个点只入队一次,所以需要标记这个点已经走过 book[tx][ty]=1; //插入新拓展的点到队列中 que[tail].x=tx; que[tail].y=ty; tail++; //统计当前新拓展的点可以消灭的敌人总数 sum=getnum(tx,ty); //更新max的值 if(sum>max){ //如果当前统计出所能消灭敌人数大于max,则更新max,并用max和my记录改点坐标 max=sum; mx=tx; my=ty; } } } head++;//注意这个地方千万不要忘记,当一个点拓展结束后,必须要head++才能对后面的点进行拓展 } //最后输出这个点和做多可以消灭的敌人总数 printf("将炸弹放置在(%d,%d)处,可以消灭%d个敌人\n",mx,my,max); getchar(); return 0; }
相关文章推荐
- HeadFirstJava——5_编写程序
- 面向对象的三大特征
- 我的家教——创造与思考
- Android事件分发机制
- 【记录】key
- 图片的异步加载和缓存
- 八、Linux/UNIX操作命令积累【touch、chkconfig】
- [转]Nginx RTMP 功能研究(Nginx流媒体)
- 【java】[转]标记接口和标记注解注解
- 装饰者设计模式
- 重定向 NSLog 输出到文件
- mysql或者mariadb多线程复制
- How-to setup Kubernetes to manage Docker Cluster on ubuntu
- MongoDB 单实例安装
- 基于VMware为CentOS 6.5配置两个网卡
- 软件开发工具第一、二章
- php对象基础大全
- C 语言struct的知识
- 清理Linux系统垃圾文件操作方法图文步骤详解
- JAVA数据源连接方式汇总