昨天是预备役第四天,我得改掉每次都拖到第二天才写学习总结的习惯,从今天开始要今日事今日毕。
写了六道Vitual Jusge上的题目,最大的收获是学会了蛇形填数和上三角。
蛇形填数:先确定矩阵的四个边界,在赋值完最外层边界后再往里赋值里面的子矩阵,不断循环,直到填充完整整个矩阵。
#include#include int main() { int n,m,i,j,k=1,a,b; int x=0,y=n-1; int t[250][250]={0}; scanf("%d",&n); for(x=0,y=n-1,m=n;m>0;m=m-2,y--,x++) //从右斜对角线的右上角开始,想左移动依次输出 { //例如第二次循环从t[1][n-3]开始向下移动填数 for(a=x,b=y,i=0; i =0; i--,b--) { t[a][b] = k; k++; } for(a=y-1,b=x,i=m-2; i>=0; i--,a--) { t[a][b] = k; k++; } for(a=x,b=x+1,i=1; i 上三角填数:先找三个边界递进的规律,每次行数的下标都是不变,加1或者减1,列数的下标都是加1,减1或者不变,那么我们就将他们存进数组单独去算递进的下标。找到以后将递增的数字赋到上面即可。
#include#include int a[2000][2000]; int main() { int b[3][2]={{0,1},{1,-1},{-1,0}}; //每次只以递增,递减,不变三种方式递变,在此赋值累加或者累减即可 int t,n,x,y,i,j,k=0,count; scanf("%d",&t); while(t--) { k=1; x=y=0; scanf("%d",&n); for(i=0; i 昨天还把大数乘法改对了,原因是数组开小了。
#include#include #include int main() { char a[1000],b[1000]; int i,j,a1[10000],b1[10000],sum[60000]; int lensum,lena,lenb; gets(a); gets(b); lena = strlen(a); lenb = strlen(b); for(i=0; i =10) { sum[i+1] += sum[i]/10; sum[i] = sum[i]%10; // if(i == lensum - 1) // lensum++; } //进位,长度进行判断 } for(i=lensum; i>0; i--) { if(sum[i]==0) continue; else break; } for(; i>=0; i--) { printf("%d",sum[i]); } printf("n"); return 0; } (素筛)小笨猴的题也改对了。
#include#include #include int main() { int i,j,t,b[1000],count[1000]; char a[1000]; gets(a); int len = strlen(a); for(i=0; i<=100; i++) { b[i]=1; } b[0] = 0; b[1] = 0; for(i=2; i<=100; i++) { for(j=2*i; j<=100; j += i) { b[j] = 0; //此时所有素数等于1 } } // for(i=0; i<=100; i++) // { // if(b[i] == 1){ // printf("%d ",i); // } // } for(i=0; i count[a[i]])min = i; } // printf("%d %dn",count[a[max]],count[a[min]]); t = count[a[max]] - count[a[min]]; if(b[count[a[max]] - count[a[min]]]==1) //判断是否为素数 { printf("Lucky Wordn"); printf("%d",t); } else { printf("No Answern"); printf("0n"); } return 0; } 以上是昨天学到的东西。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)