杨辉三角
题目地址 Python 练习实例61
**题目:打印出杨辉三角形。 **
#include "myhead.h"
int main()
{
int N = 10;
int a[N][N];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
a[i][j] = 0;
}
}
a[0][0] = 1;
for (int i = 1; i < N; i++)
{
for (int j = 0; j <= i; j++)
{
if (j - 1 < 0)
{
a[i][j] = a[i - 1][j];
}
else
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j <= i; j++)
{
cout<<a[i][j];
if (j != i)
{
cout<<" ";
}
else
{
cout<<endl;
}
}
}
return 0;
}
程序分析:用循环输出。
代码分析:循环判断,打印杨辉三角。
约瑟夫
题目地址 Python 练习实例69
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
#include "myhead.h"
// 约瑟夫算法
int josephus(int n, int m)
{
if (n <= 1)
{
return 0;
}
return (josephus(n - 1, m) + m) % n;
}
int main()
{
int n;
while(cin>>n)
{
cout<<josephus(n, 3) + 1 <<endl;
}
return 0;
}
程序分析:判断是3则移除。
代码分析:递归做法,返回的是下标从0开始。每加一个人就会多报数3次,超过人数取余。