九宫格和奇怪的数列

九宫格

 定义一个二维数组,输入1~9几个数字,利用累加分别计算其中行,列,对角线的值,再判断她们是否相等。

注意:对角线有正反两条

源码

#include<bits/stdc++.h>
using namespace std; 
int main(){
	int arr[3][3];
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			cin>>arr[i][j];
		}
	}
	int row=0,col=0,digx=0,digy=0;
	for(int i=0;i<3;i++){
		row+=arr[0][i];
		col+=arr[i][0];
		digx+=arr[i][i];
		digy+=arr[i][2-i];
	}
	if(row==col&&row==digx&&row==digy){
		cout<<"1"<<endl;
	}
	else cout<<"0"<<endl;
	return 0;
} 

奇怪的数列

定义两个数组code和codetmp,code用来储存变换之前的字符,codetmp用来储存变换之后的字符。用start表示开头的字符,用num记录相同字符连续出现的个数。

注意:每次循环过后,记得把codetmp中的数据复制到code中进行下一次变换。

源代码: 

#include<bits/stdc++.h>
#include<string.h>
#include<string>
using namespace std;

int main(){
	char code[10000];
	memset(code,'\0',sizeof(code));//注意要初始化 
	char codetmp[10000];
	memset(code,'\0',sizeof(codetmp));//注意要初始化 
	
	int index=0;
	int n;
	cin>>code;
	int len=strlen(code);
	cin>>n;
	char start; 
	int num=0;
	while(n--){//这个while循环针对code数组 
		bool flag=0;
		start=code[0];//标记当前连续的那个字符
		
		index=0; num=0;
		len=strlen(code);
		
		for(int i=0;i<len;i++){
			if(code[i]==start){//如果 当前字符==当前连续字符 
				num++;
			}
			if(i==len-1){//如果已经是最后一个字符了 
				flag=1;
			}
			if(code[i]!=start){
				/*先把num和字符start存起来*/
				codetmp[index++]=num+'0';//codetmp是字符数组,所以要加上"0" 
				codetmp[index++]=start;
				/*再把当前连续字符换成code[i]*/ 
				start=code[i];
				num=1;
			}
		}
		if(flag){//如果已经是最后一个字符,因为我们还没有存num和start,的操作如下 
			codetmp[index++]=num+'0';
			codetmp[index++]=start;
		}
		
		/*因为要保证while循环针对code数组,这里把codetmp数组复制到code数组*/
		int t_len=strlen(codetmp);
		for(int i=0;i<t_len;i++){
			code[i]=codetmp[i];
		}
	}
	cout<<code<<endl;
	system("pause");
}

eg:

输入·:5

            7 

输出:13211321322115

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值