算法入门经典 第三章

scanf 遇到tab或空格或换行符停下来
1.例题2-1 7744问题 从数本身看 从个位数的数字看
#include <iostream>
#include<math.h>
using namespace std;

int main()
{
for(int a=1;a<=9;a++)
{
for(int b=1;b<=9;b++)
{
int n=1100*a+11*b;
//floor x 等于1的区间为[1,2),florr(x+0.5)等于1的区间为[0.5,1.5)
int m=floor(sqrt(n)+0.5);
//判断两个浮点数是否相等
if(m*m==n) cout<<n;

}

}
return 0;
}

//枚举平方根x,避免开平方操作
#include <iostream>
#include<math.h>
using namespace std;

int main()
{
for(int x=1;;x++)
{
int n=x*x;
if(n>9999) break;
if(n<1000) continue;
int a=n/100;
int b=n%100;
if(a/10==a%10&&b/10==b%10)
cout<<n<<endl;
}
return 0;
}

 

2. 例题3-4 猜数字游戏的提示

#include<stdio.h>
#include<string.h>
#define maxn 100
int main()
{
int n,a[maxn],b[maxn];
int kase=0;
while(scanf("%d",&n)==1&&n)
{

for(int i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Game %d:\n",++kase);
for(;;)
{
int A=0,B=0;
for(int i=0;i<n;i++)
{
scanf("%d",&b[i]);
if(a[i]==b[i]) A++;
}
if(b[0]==0) break;
for(int d=1;d<=9;d++)
{
int c1=0,c2=0;
for(int i=0;i<n;i++)
{
if(a[i]==d) c1++;
if(b[i]==d) c2++;

}
if(c1<c2) B+=c1;else B+=c2;
}

printf( "(%d,%d)\n",A,B-A);
}

}
return 0;

}

例题3-2 开灯问题 类似头指针
#include<stdio.h>
#include<string.h>
#define maxn 100
int main()
{
int i,c;
char s[]="12345567890";
while((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++);//找错位之后的字符在常量表中的位置

if(s[i]) putchar(s[i]-1);
else putchar(c);
}
return 0;

}

使用fgetc(fin)可以从打开的文件fin中读取一个字符。一般情况下应当在检查它不是EOF后再将其转换成char值。从标准输入读取一个字符可以用getchar,相当于fgetc(stdin)

#include<stdio.h>
#include<string.h>
#define maxn 100
int main()
{
int c,q=1;
while((c=getchar())!=EOF){
if(c=='"') {
printf("%s",q?"``":"''");q=!q;}//q为真 左双引号 为假右双引号
else printf("%c",c);}
return 0;

}

 

 

程序3-3 蛇形填数

#include<stdio.h>
#include<string.h>
#define maxn 20
int a[maxn][maxn];
int main()
{
int n,x,y,tot=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
tot=a[x=0][y=n-1]=1;
while(tot<n*n)
{
while(x+1<n&&!a[x+1][y]) a[++x][y]=++tot;//变化后的位置的行坐标 下移一行x+1 
while(y-1>=0&&!a[x][y-1]) a[x][--y]=++tot;
while(x-1>=0&&!a[x-1][y]) a[--x][y]=++tot;
while(y<n-1&&!a[x][y+1]) a[x][++y]=++tot;
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%3d",a[x][y]);
printf("\n");
} 
return 0;
}

 

1、写一段代码,测试一段(printf),成功率极高。

2、代码可读性强,增加了注释部分。

-------------------------------------------------------------------------

#include <stdio.h>int a[10][10];
int n;
void printa(){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int main(){
int i,j;
int k=0;
int count=0;
scanf("%d",&n);
while(1){
for(i=1+k;i<=n-k;i++){//右列 
j=n-k;
count++;
a[i][j]=count;
}for(j=n-1-k;j>=1+k;j--){//下行 
i=n-k;
count++;
a[i][j]=count;
}for(i=n-1-k;i>=1+k;i--){//左列 
j=1+k;
count++;
a[i][j]=count;
}for(j=2+k;j<=n-1-k;j++){//上行 
i=1+k;
count++;
a[i][j]=count;
}k++;//控制二维矩阵左右边界 
if(count==n*n)//循环结束条件。 
break;
}
printa();//打印矩阵 
return 0;
}

 


例题3-3 回文词

#include <stdio.h>
#include <string.h>
#include<ctype.h>
const char *rev="A 3 HIL JM O 2TUVMXY51SE Z 8 ";
const char *msg[]={"not a palindrome","a regular palidrome","a mirrored string","a mirrored palindrome"};
char r(char ch)
{
if(isalpha(ch)) return rev[ch-'A'];
return rev[ch-'0'+25];
}
int main()
{ 
`
char s[30];
//scanf tab 空格 回车 结束
while(scanf("%s",s)==1)
{
int len=strlen(s);
int p=1,m=1;
for(int i=0;i<(len+1)/2;i++)
{
if(s[i]!=s[len-1-i]) p=0;
if(r(s[i])!=s[len-1-i]) m=0;
}
printf("%s--is %s",s,msg[m*2+p]);
}
return 0;
}

 

例题3-5 生成元

#include<stdio.h>
#include<string.h>
#define maxn 10005
int ans[maxn];
int main()
{
int T,n;
memset(ans,0,sizeof(ans));
for(int m=1;m<maxn;m++)
{
int x=m,y=m;
while(x>0){
y+=x%10;
x/=10;
}
if(ans[y]==0||m<ans[y]) ans[y]=m;}
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return 0;
}

 


例题 3-6 环状序列

#include<stdio.h>
#include<string.h>
#define maxn 105
int less(const char *s,int p,int q)
{
int n=strlen(s);
for(int i=0;i<n;i++)
if(s[(p+i)%n]!=s[(q+i)%n]) return s[(p+i)%n]<s[(q+i)%n];
return 0;//equal

}
int main()
{
int T;
char s[maxn];
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int ans=0;
int n=strlen(s);
for(int i=1;i<n;i++)
{
if(less(s,i,ans)) ans=i;
}
for(int i=0;i<n;i++)
//从第几位开始循环至第一位 比如 234561 345612 
putchar(s[(i+ans)%n]);
putchar('\n'); 
}
return 0;
}

 

转载于:https://www.cnblogs.com/is-Tina/p/7340085.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Halcon :畸变矫正与标定(2)

相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定&#xff1f; &#xff08;1&#xff09;搭建硬件1.**相机连好电脑&#xff0c;用相机厂家软件打开相机&#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**&#xff08;2&#xff09;开始标定1.*…

jQuery2

一、层次选择器 1、后代选择器$("div p"):div中所有的p标签元素 2、自带选择器$("div>p")&#xff1a;div中的子代是p的第一层元素 3、兄弟选择器$("divp")和div是兄弟的p标签 4、相邻兄弟选择器$("div~p")与div相邻的p标签 二、jQ…

HTTP协议详解(转载)

http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 转载于:https://www.cnblogs.com/youmei11/p/8608007.html

bzoj1016 [JSOI2008]最小生成树计数

1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6032 Solved: 2452[Submit][Status][Discuss]Description 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树&#xff0c;而希望知道这个图中有多少个不同的最小生成树。&…

http请求概述

当浏览器输入网址后 浏览器首先向DNS域名解析服务器发送请求。DNS反解析&#xff1a;根据浏览器请求地址中的域名&#xff0c;到DNS服务器中找到对应的服务器外网IP地址通过找到外网IP&#xff0c;向对应的服务器发请求&#xff08;首先访问服务器的WEB站点管理工具&#xff1a…

Halcon:二维仿射变换实例探究

二维仿射变换&#xff0c;顾名思义就是在二维平面内&#xff0c;对对象进行平移、旋转、缩放等变换的行为&#xff08;当然还有其他的变换&#xff0c;这里仅论述这三种最常见的&#xff09;。 Halcon中进行仿射变换的常见步骤如下&#xff1a; ① 通过hom_mat2d_identity算子…

剑指Offer-数组中重复的数字

题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的&#xff0c;但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如&#xff0c;如果输入长度为7的数组{2,3,1,0,2,5,3}&#xff0c;那么对应的…

CSS2--字体样式

## CSS2 字体样式 ##### font-family 字体族 - 规定元素的字体系列 - 把多个字体作为一个"回退"系统保存.保证浏览器的支持 - Microsoft YaHei, tahoma, arial, Hiragino Sans GB, sans-serif ##### font 字体类型 - 衬线字体(serif)&#xff1a;在字的笔划开始及结束…

虚拟机中访问连接在物理机上的摄像机(使用桥接)

最近在使用摄像机SDK做开发&#xff0c;开发好之后物理机上没有环境&#xff0c;所以弄了个虚拟机进行测试&#xff0c;就如何在虚拟机中连接摄像机做下记录。 步骤 &#xff11;.物理机上对虚拟机的适配器和摄像机的适配器设置为相同网段并进行桥接&#xff08;注意与摄像机网…

Halcon:手眼标定——眼在手外与眼在手上

为什么需要九点标定&#xff1f; 为了得到机械和相机的关系&#xff0c;就好比人的手和眼的关系。我们用手将一个物体放到空间的一个位置&#xff0c;用眼看到这个物体&#xff0c;这也存在两个坐标系&#xff0c;一个是手所在的运动空间的坐标系&#xff0c;一个是视网膜上成像…

grep 正则匹配

\{0,n\}&#xff1a;至多n次 \{\ 匹配/etc/passwd文件中数字出现只是数字1次到3次 匹配/etc/grub2.cfg文件以一个空格开头匹配一个字符的文件的所有行 显示以LISTEN结尾的行 显示匹配右边以LISTEN结尾匹配一个或者多个空格的所有输出 分组及引用&#xff1a;讲一个或者多个字符…

解决bash: mysql: command not found 的方法

rootDB-02 ~]# MySQL -u root-bash: mysql: command not found 原因:这是由于系统默认会查找/usr/bin下的命令&#xff0c;如果这个命令不在这个目录下&#xff0c;当然会找不到命令&#xff0c;我们需要做的就是映射一个链接到/usr/bin目录下&#xff0c;相当于建立一个链接文…

C#调用 Halcon引擎执行代码

Halcon引擎可以直接执行halcon代码&#xff0c;把halcon程序当做&#xff23;#的一个方法来调用&#xff0c;这样可以减轻&#xff23;#这边的程序负担&#xff0c;而且可以避免内在泄露等bug的出现。还有一种好处是方便调试视觉代码&#xff0c;你只需要启动halcon&#xff0c…

面试时如何优雅地自我介绍?

阅读本文大概需要 3.4 分钟。 1.题记 有读者提问&#xff1a;如何在面试当中做一个最好的自我介绍&#xff1f; 结合了一下自己面试以及面试别人&#xff08;模拟面试&#xff09;的一些经验&#xff0c;简单总结了几点&#xff0c;供大家参考。 2.为什么要自我介绍 在面试官要…

Cache的一些总结

输出缓存 这是最简单的缓存类型&#xff0c;它保存发送到客户端的页面副本&#xff0c;当下一个客户端发送相同的页面请求时&#xff0c;此页面不会重新生成&#xff08;在缓存有限期内&#xff09;&#xff0c;而是从缓存中获取该页面&#xff1b;当然由于缓存过期或被回收&am…

thinkphp5.0学习(九):TP5.0视图和模板

原文地址&#xff1a;http://blog.csdn.net/fight_tianer/article/details/78602711 一、视图 1.加载页面 1.继承系统控制器类return $this->fetch(参数1&#xff0c;参数2&#xff0c;参数3&#xff0c;参数4);参数1&#xff08;字符串&#xff09;&#xff1a;模板渲染参数…

C#中调用halcon引擎来执行hdev程序

调用halcon引擎有两个直接的好处&#xff1a; 避免C# 与halcon代码混编时可能产生的内存泄露问题 修改halcon程序时不用重新编译C# 勇哥写了一个示例&#xff0c;详细的应用感受和缺点限制勇哥会持续做相关的总结给大家分享。 对于halcon17来说&#xff0c;要运行下面的程序…

Node.js Up and Runing 学习日记(八)

目录 连接池基于一个简单的Socker.io服务器连接池 生产环境通常由多种资源组成: web服务器,缓存服务器和数据库服务器. 数据库服务器通常部署在web服务器之外的独立机器上,这使得面向公众的网站不必重新配置和修改复杂的数据库群就可以垂直增长了. 基于 为每一个请求创建一个甚…

036有效的数独

1 #include "000库函数.h"2 3 //一看&#xff0c;没想出什么好法子&#xff0c;就遍历了4 //最重要的是如何比较小九宫格的数据5 //44ms6 class Solution {7 public:8 bool isValidSudoku(vector<vector<char>>& board) {9 for (int i …

WinAPI——Windows 消息

消息值 注释 WM_NULL$0000 WM_CREATE$0001 WM_DESTROY$0002 WM_MOVE$0003 WM_SIZE$0005 WM_ACTIVATE$0006 WM_SETFOCUS$0007 WM_KILLFOCUS$0008 WM_ENABLE$000A WM_SETREDRAW$000B WM_SETTEXT$000C WM_GETTEXT$000D WM_GETTEXTLENGTH$000E WM_PAINT$000F WM_CLOSE$0010 WM_QUER…