算法——模拟
来源:互联网 发布:sass for mac打开很慢 编辑:程序博客网 时间:2024/05/17 06:28
第一题九九乘法表
输出格式整齐的九九乘法表样例输出:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
程序:
#include <stdio.h>
void main()
{
int i,j,x;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
x=i*j;
printf("%d×%d=%d ",j,i,x);
}
printf("\n");
}
}
第二题 方块的转换
一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始
图案按照以下列转换方法转换成新图案的最小方式:
#1:转90度:图案按顺时针转90度。
#2:转180度:图案按顺时针转180度。
#3:转270度:图案按顺时针转270度。
#4:反射:图案在水平方向翻转(形成原图案的镜像)。
#5:组合:图案在水平方向翻转,然后按照#1-#3之一转换
#6:不改变:原图案不改变。
#7:无效转换:无法用以上方法得到新图案。
如果有多种可用的转换方法,请选择序号最小的那个
程序:
#include <stdio.h>
int n;
char b[11][11];
void fan()
{
int i,j;
char d[11][11];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j]=b[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][n-i+1]=d[i][j];
}
int bijiao(char f[11][11],char d[11][11])
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(f[i][j]!=d[i][j])
return 0;
return 1;
}
void fun()
{
int i,j;
char d[11][11];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j]=b[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[j][n-i+1]=d[i][j];
}
void main()
{
int i,j,p=0;
char a[11][11],c[11][11];
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%c",&a[i][j]);
b[i][j]=a[i][j];
}
getchar();
}
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
scanf("%c",&c[i][j]);
getchar();
}
if(bijiao(b,c)==1)
printf("6");
else
{
for(i=1;i<=4;i++)
{
fun();
if(bijiao(b,c))
break;
}
if(i<4)
printf("%d",i);
else
{
fan();
if(bijiao(b,c))
printf("4");
else
{
for(i=1;i<4;i++)
{
fun();
if(bijiao(b,c))
break;
}
if(i<4)
printf("5");
else
printf("7");
}
}
}
}
第三题 循环数
循环数是那些不包括0这个数字的没有重复数字的整数 (比如说, 81362) 并且同时具有一个有趣的性质, 就像这个例子:
· 如果你从最左边的数字开始 ( 在这个例子中是8) 数最左边这个数字个数字到右边(回到最左边如果数到了最右边),你会停止在另一个新的数字(如果没有停在一个不同的数字上,这个数就不是循环数). 就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6.
· 重复这样做 (这次从“6”开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1 3 6 2, 也就是2.
· 再这样做 (这次数两个): 8 1
· 再一次 (这次一个): 3
· 又一次: 6 2 8 这是你回到了起点, 在从每一个数字开始数1次之后. 如果你在从每一个数字开始数一次以后没有回到起点, 你的数字不是一个循环数。
给你一个数字 M (在1到8位之间), 找出第一个比 M大的循环数。
程序:
#include <stdio.h>
int a[9]={0},n;
int fun()
{
int i,j,x1;
int b[9]={0};
printf("测试\n");
for(i=1,j=0;i<=n;i++)
{
printf("%4d",a[j]);
if(b[j])
break;
else
{
b[j]++;
j=(j+a[j])%n;
}
}
printf("\n");
for(i=0;i<n;i++)
{
printf("%4d",b[i]);
if(b[i]!=1)
return 0;
}
if(j==0)
return 1;
else
return 0;
}
int main()
{
int x,i,j,f=1,d,k;
scanf("%d",&x);
do
{
f=1;
x++;
printf("%d\n",x);
k=x;
n=0;
for(i=0;i<9;i++)
{
if(k!=0)
{
n++;
k=k/10;
}
}
k=x;
for(i=n-1;i>=0;i--)
{
a[i]=k%10;
k=k/10;
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j]||a[i]==0||a[j]==0)
f=0;
}
}
if(f!=0)
d=fun();
else
d=0;
printf("\n%d\n",d);
}
while(!d);
printf("%d\n%d\n",x,d);
}
- 算法——模拟
- 优化算法——模拟退火算法
- 优化算法——模拟退火算法
- 算法简介—模拟退火算法
- 算法简介—模拟退火算法
- 模拟页面调度算法——1
- 基本算法——第一单元 模拟
- 随机算法 —— 模拟退火
- 操作系统——模拟内存回收算法
- 模拟退火算法——自我总结
- 模拟退火算法——自我总结
- 啊哈!算法—模拟链表
- 经典算法之—模拟退火
- 机器学习之优化算法——模拟退火算法
- 现代启发式算法(二)——模拟退火算法
- HDU—5178—Pairs—【基本算法】【模拟】
- 路由模拟——路由算法1的构想
- 路由模拟——路由算法2的实现
- Xcode如何查看内存中的数据
- FacebookApp开发教程
- CSP的知识点
- 几个java关键字
- Node.textContent
- 算法——模拟
- oracle日志操作模式(归档模式和非归档模式)
- textContent与innerText的不同
- 打开证书存贮区的几种方式
- 右键菜单加上“用记事本打开”
- 今天上TA上闲逛,发现水区有个哥们说自己被当地一家媒体采访,上了杂志封面。放出杂志online地址
- 细线表格的几种做法(css)
- 堆、栈及其区别
- 右键菜单加上“管理员取得所有权”