Java编程-回文矩阵怎么写啊

Java编程-回文矩阵怎么写啊,第1张

判断一个三位数是不是奇数,是不是素数,是不是水仙花数的程序如下:

#include<stdioh>

#include<mathh>

int main()

{

int n,a,b,c;

scanf("%d",&n);

if(n%2)printf("%d是一个奇数\n",n);

else printf("%d不是一个奇数\n",n);

for(a=2;a<=sqrt(n);a++)

if(n%a==0)break;

if(n%a)printf("%d是一个素数\n",n);

else printf("%d不是一个素数\n",n);

a=n/100;

b=n/10%10;

c=n%10;

if(n==aaa+bbb+ccc)printf("%d是一个水仙花数\n",n);

else printf("%d不是一个水仙花数\n",n);

return 0;

}

基本思路:1、递归。字符串掐头去尾然后再进行下一级判断。这样会有重复,并且计算复杂度是指数级增长。 2、简单循环。从2->[字符串长度]的字符串逐个获得判断。

这里就用第二种方法了~~

#include <iostream>

#include <cstdio>

#include <cstring>

void outputString(char, int);

char partString(char, int, int);

char revString(char, int);

bool isReversible(char, int);

bool strEqual(char, char, int);

int main() {

using namespace std;

char str;

cout << "Confirm the length of the string : ";

int len = 0;

cin >> len;

if(len <= 0) return 0;

cout << endl << "The string please =O= : ";

str = new char[len + 1];

cinget();

cingetline(str, len);

cout << endl << "The String : " << str;

cout << endl << "Now outputting " << endl;

outputString(str, strlen(str));

cout << endl << "Done, press any key to quit" << endl;

system("pause");

}

void outputString(char str, int len) {

for(int i = 2; i < len - 1; i++) {

for(int j = 0; j < len - i; j++) {

char str2 = partString(str, j, i);

if(isReversible(str2, i))

std::cout << str2 << std::endl;

delete[] str2;

}

}

}

char partString(char str, int index, int len) {

char str2 = new char[len + 1];

for(int i = index; i < index + len; i++)

str2[i - index] = str[i];

str2[len] = '\0';

return str2;

}

bool isReversible(char str, int len) { //确认一个字符串是否是回文串。

char str1, str2;

if(len % 2 == 0) {

str1 = partString(str, 0, len/2);

str2 = revString(partString(str, len/2, len/2), len/2);

} else {

str1 = partString(str, 0, len/2);

str2 = revString(partString(str, len/2 + 1, len/2), len/2);

}

bool b = strEqual(str1, str2, len/2);

delete[] str1, str2;

return b;

}

char revString(char str, int len) { //返回一个前后颠倒的字符串。

char str2 = new char[len + 1];

for(int i = 0; i < len; i++) {

str2[len - i - 1] = str[i];

}

str2[len] = '\0';

return str2;

}

bool strEqual(char str1, char str2, int len) { //确认两个字符串是否相等。

for(int i = 0; i < len; i++)

if(str1[i] != str2[i]) return false;

return true;

}

表示要改写成java难度应该不大 咱写的那么认真还测试编译通过了就采纳了吧~QwQ

public static void main(String[] args) {

Scanner sc=new Scanner(Systemin);

Systemoutprintln("请输入矩阵1行数:");

String a=scnextLine();

boolean b=false;

for(int i=0;i<alength();i++){

if(acharAt(i)!=acharAt(alength()-i-1)){

b=false;

break;

}else{

b=true;

}

}

if(b){

Systemoutprintln(a+"是回文");

}else{

Systemoutprintln(a+"不是回文");

}

}

以上就是关于Java编程-回文矩阵怎么写啊全部的内容,包括:Java编程-回文矩阵怎么写啊、JAVA练习题,编写一程序输出一个字符串中的所有回文串,求大神解答~、如何用java写个程序判断数字是否是回文数字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9808694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存