第一题题意:就是不能回去:
#include<iostream>
using namespace std;
int main()
{int t;cin>>t;while (t--){int n,ch[1001]={0};cin>>n;string str;cin>>str;bool flag = true;ch[str[0]]++;for (int i=1;i<n;i++){if (str[i]!=str[i-1]){if (ch[str[i]]!=0) {flag = false;break;}else{ch[str[i]]++;}}}if (flag == true) cout<<"Yes"<<endl;else cout<<"No"<<endl;}
}
第二题:找1-n的回文数字有多少个:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{int t;cin>>t;while (t--){int n;string str;cin>>n;int gg = n;do{str+=(gg%10+'0');gg/=10;}while (gg!=0);// string str = to_string(n);int len = str.length();int sum = 9*(len-1);int num = 1;for (int i=1;i<len;i++){num = num*10+1;}int tip = num;while (1){if (num>n) break;else {num+=tip;sum++;}}cout<<sum<<endl;}
}
第三题:方阵,相邻数字不能差1
我感觉我写烦了。
#include<iostream>
using namespace std;
int main()
{int t;cin>>t;while (t--){int n;cin>>n;if (n==2) cout<<-1<<endl;else{int ch[10001]={0};int cou = 1;for (int i=0;i<n*n;i+=2){ch[i] = cou;cou++;}for (int i=1;i<n*n;i+=2){ch[i] = cou;cou++;}cou = 0;while (1){if (cou == n*n) break;for (int i=0;i<n;i++){cout<<ch[cou]<<" ";cou++;}cout<<endl;}}}
}
原谅本蒻蒻只写出来这三题,第五题DP写法差一点写出来了,/(ㄒoㄒ)/~~