- 蛇形矩阵
题目
//这里主要是矩阵的赋值,这里主要练习二维数组坐标的转换。这里可以的数组从1开始赋值,
//在下面while循环语句中的横纵坐标直接进行加减,减少了代码行,而且更好看。
//这里脑子转不过来,要慢慢想,才能做出,这也是做题,写代码前要思路清晰才能够写得好,写的快。
#include<stdio.h>
int main() {
int a[100][100];
int n;
while (scanf("%d", &n) != EOF) {
int col,row,k=1,m=0;
for (int i = 1; i <= n; i++)
{
row = i; col = 1;
while (1) {
a[row--][col++] = k++;
if (row == 0)break;
}
}
for(int i=1;i<=n;i++)
for (int j = 1; j <= n+1-i; j++)
{
printf("%d ", a[i][j]);
if (j == n+1-i)printf("\n");
}
}
return 0;
}
2.算法:埃氏筛
int fun(int n) {
int k=0, j;
for (int i = 2; i <= n; i++)
{
if (!a[i]) {
b[k++] = i;
for (j = 2; j * i <= n; j++)
a[i * j] = 1;
}
}
return k;
}
这里的算法相比于暴力法,虽然这里浪费了空间,但是让时间减少了许多,能避免超时;
例如:
这题理论上埃氏筛因该能过的。
//这题主要是用了埃氏筛,这里选出素数后,所以在n的范围内筛选出的倍数都是合数,
//所以之后这个数就不用再次访问了,这里用vis数组代表数i是否被访问过。
//只要没有被访问过所以都是素数。
#include <stdio.h>
int vis[1000001];
int prime[100000] ;
void fun(int n) {
int i, k;
k = 0;
for ( i = 2; i <= n; i++)
{
if (!vis[i])
{
prime[k++] = i;
for (int j = 2; j * i <= n; j++)
vis[j * i] = 1;
}
}
}
int main() {
int n,k;
fun(1000000);
while (scanf("%d", &n) != EOF) {
for (int i = 0; prime[i] <= n&&prime[i]&&i<n; i++)
printf("%d\n", prime[i]);
}
return 0;
}
3.第一次做出结构体的题
题目:
代码:
#include<stdio.h>
typedef struct stu
{
char name[20];
int finalScore;
int classReview;
char classLeader;
char west;
int discourse;
}stu;
int main() {
stu a[100];
int b, i, n;
while (scanf("%d", &n) != EOF) {
int sum[100] = { 0 };
for (i = 0; i < n; i++)
{ //主要这里的输入%c前面要空一格。
scanf("%s%d%d %c %c%d", &a[i].name, &a[i].finalScore, &a[i].classReview, &a[i].classLeader, &a[i].west, &a[i].discourse);
if (a[i].finalScore > 80 && a[i].discourse > 0)sum[i] += 8000;
if (a[i].finalScore > 85 && a[i].classReview > 80)sum[i] += 4000;
if (a[i].finalScore > 90)sum[i] += 2000;
if (a[i].west == 'Y' && a[i].finalScore > 85)sum[i] += 1000;
if (a[i].classReview > 80 && a[i].classLeader == 'Y')sum[i] += 850;
}
int max = sum[0];
int k = 0, d = 0;
for (i = 0; i < n; i++)
{
if (sum[i] > max) {
max = sum[i]; k = i;
}
d += sum[i];
}
printf("%s\n%d\n%d\n", a[k].name, sum[k], d);
}
}
4.今天讲了二分法,和二分答案算法
但是还没完全理解,尽量下周的时候早点理解。
今天早上再看吧!!!
这周尽量把书的内容全部看完,然后养成上传github的习惯,这周熟悉并配置好,还有鹏哥的规范写法,看一些重点吧!!!
OKOK